JSF - mehrere Beans in einer JSP Seite

Hallo zusammen,

ich versuche gerade mich in das Thema JSF einzuarbeiten und komme bei einem Problem nicht weiter. Folgende Situation:

Ich habe zwei Klassen Event und Person, mit einer n:m Beziehung. Gespeichert werden die Klassen mit Hibernate in einer MySQL Datenbank. Wenn ich die Klassen teste funktioniert auch alles Wunderbar.

Unabhängig von der n:m Beziehung möchte ich jetzt einfach nur folgendes:
Ein JSP/JSP Eingabeformular das mit beiden Klassen ( Beans ) verbunden ist.
Das Problem ist nur das ich nicht weiß wie die Beziehung zwischen den beiden Klassen
hergestellt werden kann, bzw. wie greife ich in der Methode Event.createEvent auf die Felder der Person- Bean zu ?

Ich hoffe mir kann hier jemand weiterhelfen ... mfg

Datei: faces-config.xml
Code:
<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->
<faces-config version="1.2" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
    <managed-bean>
        <managed-bean-name>EventBean</managed-bean-name>
        <managed-bean-class>webapp.Event</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>

    <managed-bean>
        <managed-bean-name>PersonBean</managed-bean-name>
        <managed-bean-class>webapp.Person</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
    
...
</faces-config>

Datei: input.jsp
Code:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<%--
    This file is an entry point for JavaServer Faces application.
--%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <f:view>
            <h:form>

                <h1>Create A New Event.</h1>
                <h:outputText value="Title:" />
                <h:inputText value="#{EventBean.title}"/>
                <br>
                <h:outputText value="Firstname:" />
                <h:inputText value="#{PersonBean.firstname}" />
                <h:commandButton action="#{EventBean.createEvent}" value="Create"/>
            </h:form>
        </f:view>
    </body>
</html>

Datei: event.java
Code:
package webapp;

import java.util.Date;
import org.hibernate.Session;

/**
 *
 * @author Blackbird
 */
public class Event {

    private Long id;
    private String title;
    private Date date;

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public Long getId() {
        return id;
    }

    private void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String createEvent() {

        // Wie greife ich auf die PersonBean zu ?

        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        session.save(this);
        session.getTransaction().commit();

        return "listEvents";
    }
}

Datei: person.java
Code:
package webapp;

import java.util.HashSet;
import java.util.Set;

/**
 *
 * @author Blackbird
 */
public class Person {

    private Long id;
    private int age;
    private String firstname;
    private String lastname;
    private Set events = new HashSet();

    public Person() {
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }


    public Long getId() {
        return id;
    }

    private void setId(Long id) {
        this.id = id;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public Set getEvents() {
        return events;
    }

    public void setEvents(Set events) {
        this.events = events;
    }
}
 
Zurück