JSF Problem mit JSF und Foreign Key Tabellen

Tramatnois

Mitglied
Hallo zusammen,

ich würde mich sehr freuen, wenn ihr mir bei meiner Problematik weiterhelfen könntet.
Ich selber bin erst vor 2 Monaten in JSF & Co. eingestiegen. Derzeit studiere ich Wirtschaftsinformatik in Stuttgart und bin im 5. Semester. Derzeit sitze ich an einem Projekt, welches mir von der Uni beauftragt wurde. Diese wird zum Ende hin benotet. Ich bin auch schon bisher sehr weit gekommen. Jedoch stehe ich vor 2 größeren Problemen und hoffe auf eure Hilfe, denn bisher bin ich nicht wirklich weitergekommen.

Und zwar folgendes:

Das erste Problem besteht darin, dass ich es einfach nicht hin bekomme, dass in meiner Tabelle
Mitglieder die Adressdaten gesondert ausgegeben werden. Bisher ist es mir nur möglich die entsprechende id der Adresse des Mitglieds anzuzeigen. siehe folgende Grafik.

Directupload.net - jmu34uop.png

Hier die Grafik meiner Tabelle Adresse Mitglieder:

Directupload.net - 9tidqf4a.png

Ich würde schon gerne die Spalten der Tabelle Adressen in die Tabelle Mitglieder sehen..:)

Hier mal ein Auszug aus meinem EER Diagram:

Directupload.net - mq8hn6s9.png

Wie ihr feststellen werdet, habe ich dieses Problem nicht nur bei der Adresse sondern auch bei anderen Tabellen, wie z.B. Fitnesspakete usw.

Ich habe schon einige Dinge probiert, jedoch bisher einfach nicht auf eine Lösung gekommen.

Das zweite Problem besteht darin, das es bisher sehr umständlich ist, z.B. ein neues Mitglied anzulegen. Ich müsste erst eine Adresse anlegen(welche bisher noch in einem anderem Form ist) damit ich sozusagen dann die Id einer Adresse auswählen kann, die zum neuen Mitglied passt.
siehe nächste Grafik:

Directupload.net - eog2idvg.png

Aber ist es nicht möglich eine Art Form zu erstellen, bei dem ich die Adresse erstelle und ich dann für mein mitglied create form die id dieser adresse mitgebe? Ich würde gerne etwas wie diesem nutzen, habe aber bisher dieses nicht zum laufen gekriegt. Ich vermute, weil ich z.B. Adresse ausgelagert habe.

PrimeFaces - ShowCase

Das dritte Problem ist eigentlich kein wirkliches Problem. Eher eine Frage. Ist es möglich, dass sobald ich ein neues Mitglied erstellen möchte, er mir das Feld IdMitglieder automatisch mit der nächsten Id aus der Datenbank befüllt. Ich dachte mir etwas wie:

Java:
// Methode für getLastIdMitglieder
@NamedQuery(name = "Mitglieder.findByLastIdMitglieder", query = "SELECT MAX(m.idMitglieder) FROM Mitglieder m")

und dann einfach diesen Rückgabewert +1 an das create Mitglied form übergeben. Funktioniert leider auch nicht.. ;-)


Ich würde mich sehr darüber freuen, wenn ich hier ein paar Lösungsvorschläge finden könnte. ;-)

Ich wünsche euch noch einen schönen restlichen Freitag


Viele liebe Grüße aus Stuttgart


Stefan aka Tramatnois

P.S. Habe versucht die Bilder direkt in diesem post einzubinden, jedoch wurden diese nicht angezeigt. Deshalb nun als link.. ;-)
 
Zuletzt bearbeitet:

Templarthelast

Bekanntes Mitglied
Poste mal deinen Code, denn ohne Glasskugel ist das Problem schwer genau zu erkennen. Ich vermute einfach mal, dass du öfters auf das eigentliche Objekt statt auf die primitiven Datentypen des Objekts zuzugreifen.

Wegen der Id: ich würde Ids eigentlich immer automatisch generieren. Das funktioniert über die annotation @GeneratedValue(strategy = GenerationType.AUTO) ggf. musst du für deine Datenbank den Generationtype ändern.
 

Tramatnois

Mitglied
Mitglieder: List.xhtml (Nur Id der Adresse in Tabelle Mitglied sichtbar):

HTML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">

    <ui:composition template="/template.xhtml">
        <ui:define name="title">
            <h:outputText value="#{bundle.ListMitgliederTitle}"></h:outputText>
        </ui:define>

        <ui:define name="body">

            <h:form>  
                <p:dataTable var="item" value="#{mitgliederController.items}" id="mitgliedertable" rowKey="#{item.idMitglieder}" paginator="true" rows="5" selectionMode="single">
                    <p:column headerText="#{bundle.ListMitgliederTitle_idMitglieder}" filterBy="#{item.idMitglieder}" id="idMitglieder">  
                        #{item.idMitglieder} 
                    </p:column>  
                    <p:column headerText="#{bundle.ListMitgliederTitle_profilbild}" filterBy="#{item.profilbild}" id="profilbild">  
                        #{item.profilbild}
                    </p:column>   
                    <p:column headerText="#{bundle.ListMitgliederTitle_vorname}" filterBy="#{item.vorname}" id="vorname">  
                        #{item.vorname}  
                    </p:column>  
                    <p:column headerText="#{bundle.ListMitgliederTitle_nachname}" filterBy="#{item.nachname}" id="nachname">  
                        #{item.nachname} 
                    </p:column>  
                    <p:column headerText="#{bundle.ListMitgliederTitle_status}" filterBy="#{item.status}" id="status">  
                        #{item.status}
                    </p:column> 
                    <p:column headerText="#{bundle.ListMitgliederTitle_adresseidAdresse}" filterBy="#{item.adresseidAdresse}" id="adresseidAdresse">  
                        #{item.adresseidAdresse}
                    </p:column>
                    <p:column headerText="#{bundle.ListMitgliederTitle_fitnesspaketidFitnesspaket}" filterBy="#{item.fitnesspaketidFitnesspaket}" id="fitnesspaketidFitnesspaket">  
                        #{item.fitnesspaketidFitnesspaket}
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="&nbsp;"/>
                        </f:facet>
                        <h:commandLink action="#{mitgliederController.prepareView}" value="#{bundle.ListeViewLink}"/>
                        <h:outputText value=" "/>
                        <h:commandLink action="#{mitgliederController.prepareEdit}" value="#{bundle.ListEditLink}"/>
                        <h:outputText value=" "/>
                        <h:commandLink action="#{mitgliederController.destroy}" value="#{bundle.ListDestroyLink}"/>
                    </p:column>
                </p:dataTable> 
            </h:form>
        </ui:define>
    </ui:composition>
</html>

Mitglieder: List.xhtml (Adresse in Tabelle Mitglied sichtbar):

Jedoch geht das so wohl nicht.. :)

HTML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">

    <ui:composition template="/template.xhtml">
        <ui:define name="title">
            <h:outputText value="#{bundle.ListMitgliederTitle}"></h:outputText>
        </ui:define>
        <ui:define name="body">
            <h:form>  
                <p:dataTable var="item" value="#{mitgliederController.items}" id="mitgliedertable" rowKey="#{item.idMitglieder}" paginator="true" rows="5" selectionMode="single">
                    <p:column headerText="#{bundle.ListMitgliederTitle_idMitglieder}" filterBy="#{item.idMitglieder}" id="idMitglieder">  
                        #{item.idMitglieder} 
                    </p:column>  
                    <p:column headerText="#{bundle.ListMitgliederTitle_profilbild}" filterBy="#{item.profilbild}" id="profilbild">  
                        #{item.profilbild}
                    </p:column>   
                    <p:column headerText="#{bundle.ListMitgliederTitle_vorname}" filterBy="#{item.vorname}" id="vorname">  
                        #{item.vorname}  
                    </p:column>  
                    <p:column headerText="#{bundle.ListMitgliederTitle_nachname}" filterBy="#{item.nachname}" id="nachname">  
                        #{item.nachname} 
                    </p:column>  
                    <p:column headerText="#{bundle.ListMitgliederTitle_status}" filterBy="#{item.status}" id="status">  
                        #{item.status}
                    </p:column> 

                    <!--Spalte Adresse -->
                    <p:column headerText="#{bundle.ListMitgliederTitle_adresseidAdresse}" filterBy="#{item.adresseidAdresse}" id="adresseidAdresse">  
                        
                        <!-- Überlegung war es auf adresseMitgliederController.items zuzugreifen. -->
                        <!-- 
                         <p:dataTable var="itemAdresse" value="#{adresseMitgliederController.items}" id="adresseMitgliederTable" rowKey="#{itemAdresse.idAdresse}" paginator="true" rows="5" selectionMode="single" filterEvent="#{adresseMitgliederController.liste}"> 
                            <p:column headerText="#{bundle.ListAdresseMitgliederTitle_idAdresse}" filterBy="#{itemAdresse.idAdresse}" id="idAdresseMitglieder">  
                        #{itemAdresse.idAdresse}
                    </p:column>  
                    <p:column headerText="#{bundle.ListAdresseMitgliederTitle_strasse}" filterBy="#{itemAdresse.strasse}" id="strasseMitglieder">  
                        #{itemAdresse.strasse}  
                    </p:column>  
                    <p:column headerText="#{bundle.ListAdresseMitgliederTitle_nummer}" filterBy="#{itemAdresse.nummer}" id="nummerMitglieder">  
                        #{itemAdresse.nummer} 
                    </p:column>  
                    <p:column headerText="#{bundle.ListAdresseMitgliederTitle_plz}" filterBy="#{itemAdresse.plz}" id="plzMitglieder">  
                        #{itemAdresse.plz}
                    </p:column>  
                    <p:column headerText="#{bundle.ListAdresseMitgliederTitle_ort}" filterBy="#{itemAdresse.ort}" id="ortMitglieder">  
                        #{itemAdresse.ort}
                    </p:column>  
                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="&nbsp;"/>
                        </f:facet>
                        <h:commandLink action="#{adresseMitgliederController.prepareView}" value="#{bundle.ListeViewLink}"/>
                        <h:outputText value=" "/>
                        <h:commandLink action="#{adresseMitgliederController.prepareEdit}" value="#{bundle.ListEditLink}"/>
                        <h:outputText value=" "/>
                        <h:commandLink action="#{adresseMitgliederController.destroy}" value="#{bundle.ListDestroyLink}"/>
                    </p:column>
                </p:dataTable>
                        -->
                        <!-- Ausgabe der ID zum Mitglied passenden Adresse -->
                        #{item.adresseidAdresse}
                    </p:column>

                    <p:column headerText="#{bundle.ListMitgliederTitle_fitnesspaketidFitnesspaket}" filterBy="#{item.fitnesspaketidFitnesspaket}" id="fitnesspaketidFitnesspaket">  
                        #{item.fitnesspaketidFitnesspaket}
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="&nbsp;"/>
                        </f:facet>
                        <h:commandLink action="#{mitgliederController.prepareView}" value="#{bundle.ListeViewLink}"/>
                        <h:outputText value=" "/>
                        <h:commandLink action="#{mitgliederController.prepareEdit}" value="#{bundle.ListEditLink}"/>
                        <h:outputText value=" "/>
                        <h:commandLink action="#{mitgliederController.destroy}" value="#{bundle.ListDestroyLink}"/>
                    </p:column>
                </p:dataTable> 
            </h:form>
        </ui:define>
    </ui:composition>
</html>
 

Tramatnois

Mitglied
Entity Class from Database: Mitglieder

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package de.jee6.shapeyourbody.model;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Tramatnois
 */
@Entity
@Table(name = "mitglieder")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Mitglieder.findAll", query = "SELECT m FROM Mitglieder m"),
    @NamedQuery(name = "Mitglieder.findByIdMitglieder", query = "SELECT m FROM Mitglieder m WHERE m.idMitglieder = :idMitglieder"),
    // Methode für getLastIdMitglieder
    //@NamedQuery(name = "Mitglieder.findByLastIdMitglieder", query = "SELECT MAX(m.idMitglieder) FROM Mitglieder m"),
    @NamedQuery(name = "Mitglieder.findByVorname", query = "SELECT m FROM Mitglieder m WHERE m.vorname = :vorname"),
    @NamedQuery(name = "Mitglieder.findByNachname", query = "SELECT m FROM Mitglieder m WHERE m.nachname = :nachname"),
    @NamedQuery(name = "Mitglieder.findByProfilbild", query = "SELECT m FROM Mitglieder m WHERE m.profilbild = :profilbild"),
    @NamedQuery(name = "Mitglieder.findByEmail", query = "SELECT m FROM Mitglieder m WHERE m.email = :email"),
    @NamedQuery(name = "Mitglieder.findByLaufzeitvon", query = "SELECT m FROM Mitglieder m WHERE m.laufzeitvon = :laufzeitvon"),
    @NamedQuery(name = "Mitglieder.findByLaufzeitbis", query = "SELECT m FROM Mitglieder m WHERE m.laufzeitbis = :laufzeitbis"),
    @NamedQuery(name = "Mitglieder.findByStatus", query = "SELECT m FROM Mitglieder m WHERE m.status = :status")})
public class Mitglieder implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idMitglieder")
    private Integer idMitglieder;
    @Size(max = 45)
    @Column(name = "Vorname")
    private String vorname;
    @Size(max = 45)
    @Column(name = "Nachname")
    private String nachname;
    @Size(max = 255)
    @Column(name = "Profilbild")
    private String profilbild;
    // @Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="Invalid email")//if the field contains email address consider using this annotation to enforce field validation
    @Size(max = 155)
    @Column(name = "email")
    private String email;
    @Size(max = 45)
    @Column(name = "Laufzeit_von")
    private String laufzeitvon;
    @Size(max = 45)
    @Column(name = "Laufzeit_bis")
    private String laufzeitbis;
    @Column(name = "Status")
    private Short status;
    @ManyToMany(mappedBy = "mitgliederCollection")
    private Collection<Kurse> kurseCollection;
    @JoinTable(name = "mitglied_studio", joinColumns = {
        @JoinColumn(name = "Mitglieder_idMitglieder", referencedColumnName = "idMitglieder")}, inverseJoinColumns = {
        @JoinColumn(name = "Studio_idStudio", referencedColumnName = "idStudio")})
    @ManyToMany
    private Collection<Studio> studioCollection;
    @JoinTable(name = "mitglied_rechnung", joinColumns = {
        @JoinColumn(name = "Mitglieder_idMitglieder", referencedColumnName = "idMitglieder")}, inverseJoinColumns = {
        @JoinColumn(name = "Rechnung_Rechnungsnummer", referencedColumnName = "Rechnungsnummer")})
    @ManyToMany
    private Collection<Rechnung> rechnungCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "mitgliederidMitglieder")
    private Collection<Logindatenmitglieder> logindatenmitgliederCollection;
    @JoinColumn(name = "Kontoinformationen_Mitglieder_idKontoinformationen", referencedColumnName = "idKontoinformationen")
    @ManyToOne(optional = false)
    private KontoinformationenMitglieder kontoinformationenMitgliederidKontoinformationen;
    @JoinColumn(name = "Fitnesspaket_idFitnesspaket", referencedColumnName = "idFitnesspaket")
    @ManyToOne(optional = false)
    private Fitnesspaket fitnesspaketidFitnesspaket;
    @JoinColumn(name = "Adresse_idAdresse", referencedColumnName = "idAdresse")
    @ManyToOne(optional = false)
    private AdresseMitglieder adresseidAdresse;

    public Mitglieder() {
    }

    public Mitglieder(Integer idMitglieder) {
        this.idMitglieder = idMitglieder;
    }

    public Integer getIdMitglieder() {
        return idMitglieder;
    }

    public void setIdMitglieder(Integer idMitglieder) {
        this.idMitglieder = idMitglieder;
    }

    public String getVorname() {
        return vorname;
    }

    public void setVorname(String vorname) {
        this.vorname = vorname;
    }

    public String getNachname() {
        return nachname;
    }

    public void setNachname(String nachname) {
        this.nachname = nachname;
    }

    public String getProfilbild() {
        return profilbild;
    }

    public void setProfilbild(String profilbild) {
        this.profilbild = profilbild;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getLaufzeitvon() {
        return laufzeitvon;
    }

    public void setLaufzeitvon(String laufzeitvon) {
        this.laufzeitvon = laufzeitvon;
    }

    public String getLaufzeitbis() {
        return laufzeitbis;
    }

    public void setLaufzeitbis(String laufzeitbis) {
        this.laufzeitbis = laufzeitbis;
    }

    public Short getStatus() {
        return status;
    }

    public void setStatus(Short status) {
        this.status = status;
    }

    @XmlTransient
    public Collection<Kurse> getKurseCollection() {
        return kurseCollection;
    }

    public void setKurseCollection(Collection<Kurse> kurseCollection) {
        this.kurseCollection = kurseCollection;
    }

    @XmlTransient
    public Collection<Studio> getStudioCollection() {
        return studioCollection;
    }

    public void setStudioCollection(Collection<Studio> studioCollection) {
        this.studioCollection = studioCollection;
    }

    @XmlTransient
    public Collection<Rechnung> getRechnungCollection() {
        return rechnungCollection;
    }

    public void setRechnungCollection(Collection<Rechnung> rechnungCollection) {
        this.rechnungCollection = rechnungCollection;
    }

    @XmlTransient
    public Collection<Logindatenmitglieder> getLogindatenmitgliederCollection() {
        return logindatenmitgliederCollection;
    }

    public void setLogindatenmitgliederCollection(Collection<Logindatenmitglieder> logindatenmitgliederCollection) {
        this.logindatenmitgliederCollection = logindatenmitgliederCollection;
    }

    public KontoinformationenMitglieder getKontoinformationenMitgliederidKontoinformationen() {
        return kontoinformationenMitgliederidKontoinformationen;
    }

    public void setKontoinformationenMitgliederidKontoinformationen(KontoinformationenMitglieder kontoinformationenMitgliederidKontoinformationen) {
        this.kontoinformationenMitgliederidKontoinformationen = kontoinformationenMitgliederidKontoinformationen;
    }

    public Fitnesspaket getFitnesspaketidFitnesspaket() {
        return fitnesspaketidFitnesspaket;
    }

    public void setFitnesspaketidFitnesspaket(Fitnesspaket fitnesspaketidFitnesspaket) {
        this.fitnesspaketidFitnesspaket = fitnesspaketidFitnesspaket;
    }

    public AdresseMitglieder getAdresseidAdresse() {
        return adresseidAdresse;
    }

    public void setAdresseidAdresse(AdresseMitglieder adresseidAdresse) {
        this.adresseidAdresse = adresseidAdresse;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idMitglieder != null ? idMitglieder.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Mitglieder)) {
            return false;
        }
        Mitglieder other = (Mitglieder) object;
        if ((this.idMitglieder == null && other.idMitglieder != null) || (this.idMitglieder != null && !this.idMitglieder.equals(other.idMitglieder))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "de.jee6.shapeyourbody.model.Mitglieder[ idMitglieder=" + idMitglieder + " ]";
    }
}
 

Tramatnois

Mitglied
Entity Class from Database: AdresseMitglieder
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package de.jee6.shapeyourbody.model;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Tramatnois
 */
@Entity
@Table(name = "adresse_mitglieder")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "AdresseMitglieder.findAll", query = "SELECT a FROM AdresseMitglieder a"),
    @NamedQuery(name = "AdresseMitglieder.findByIdAdresse", query = "SELECT a FROM AdresseMitglieder a WHERE a.idAdresse = :idAdresse"),
    @NamedQuery(name = "AdresseMitglieder.findByStrasse", query = "SELECT a FROM AdresseMitglieder a WHERE a.strasse = :strasse"),
    @NamedQuery(name = "AdresseMitglieder.findByNummer", query = "SELECT a FROM AdresseMitglieder a WHERE a.nummer = :nummer"),
    @NamedQuery(name = "AdresseMitglieder.findByPlz", query = "SELECT a FROM AdresseMitglieder a WHERE a.plz = :plz"),
    @NamedQuery(name = "AdresseMitglieder.findByOrt", query = "SELECT a FROM AdresseMitglieder a WHERE a.ort = :ort")})
public class AdresseMitglieder implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idAdresse")
    private Integer idAdresse;
    @Size(max = 45)
    @Column(name = "Strasse")
    private String strasse;
    @Size(max = 10)
    @Column(name = "Nummer")
    private String nummer;
    @Size(max = 5)
    @Column(name = "PLZ")
    private String plz;
    @Size(max = 45)
    @Column(name = "Ort")
    private String ort;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "adresseidAdresse")
    private Collection<Mitglieder> mitgliederCollection;

    public AdresseMitglieder() {
    }

    public AdresseMitglieder(Integer idAdresse) {
        this.idAdresse = idAdresse;
    }

    public Integer getIdAdresse() {
        return idAdresse;
    }

    public void setIdAdresse(Integer idAdresse) {
        this.idAdresse = idAdresse;
    }

    public String getStrasse() {
        return strasse;
    }

    public void setStrasse(String strasse) {
        this.strasse = strasse;
    }

    public String getNummer() {
        return nummer;
    }

    public void setNummer(String nummer) {
        this.nummer = nummer;
    }

    public String getPlz() {
        return plz;
    }

    public void setPlz(String plz) {
        this.plz = plz;
    }

    public String getOrt() {
        return ort;
    }

    public void setOrt(String ort) {
        this.ort = ort;
    }

    @XmlTransient
    public Collection<Mitglieder> getMitgliederCollection() {
        return mitgliederCollection;
    }

    public void setMitgliederCollection(Collection<Mitglieder> mitgliederCollection) {
        this.mitgliederCollection = mitgliederCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idAdresse != null ? idAdresse.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof AdresseMitglieder)) {
            return false;
        }
        AdresseMitglieder other = (AdresseMitglieder) object;
        if ((this.idAdresse == null && other.idAdresse != null) || (this.idAdresse != null && !this.idAdresse.equals(other.idAdresse))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "de.jee6.shapeyourbody.model.AdresseMitglieder[ idAdresse=" + idAdresse + " ]";
    }
    
}
 

Tramatnois

Mitglied
Controller: Mitglieder
Java:
package de.jee6.shapeyourbody.business;

import de.jee6.shapeyourbody.model.Mitglieder;
import de.jee6.shapeyourbody.business.util.JsfUtil;
import de.jee6.shapeyourbody.business.util.PaginationHelper;
import de.jee6.shapeyourbody.model.MitgliederExt;
import de.jee6.shapeyourbody.presentation.MitgliederFacade;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ResourceBundle;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
import lombok.Getter;
import lombok.Setter;

@ManagedBean(name = "mitgliederController")
@SessionScoped
public class MitgliederController implements Serializable {

    @Getter
    @Setter
    private Mitglieder current;
    private DataModel items = null;
    @EJB
    private de.jee6.shapeyourbody.presentation.MitgliederFacade ejbFacade;
    private PaginationHelper pagination;
    private int selectedItemIndex;

    public MitgliederController() {
    }

    public Mitglieder getSelected() {
        if (current == null) {
            current = new Mitglieder();
            selectedItemIndex = -1;
        }

        return current;
    }

    private MitgliederFacade getFacade() {
        return ejbFacade;
    }

    public PaginationHelper getPagination() {
        if (pagination == null) {
            pagination = new PaginationHelper(10) {
                @Override
                public int getItemsCount() {
                    return getFacade().count();
                }

                @Override
                public DataModel createPageDataModel() {
                    return new ListDataModel(getFacade().findRange(new int[]{getPageFirstItem(), getPageFirstItem() + getPageSize()}));
                }
            };
        }
        return pagination;
    }

    public String prepareList() {
        recreateModel();
        return "List";
    }

    public String prepareView() {
        current = (Mitglieder) getItems().getRowData();
        selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
        return "View";
    }

    public String prepareCreate() {
        current = new Mitglieder();
        selectedItemIndex = -1;
        return "Create";
    }

    public String create() {
        try {
            getFacade().create(current);
            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("MitgliederCreated"));
            return prepareCreate();
        } catch (Exception e) {
            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
            return null;
        }
    }

    public String prepareEdit() {
        current = (Mitglieder) getItems().getRowData();
        selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
        return "Edit";
    }

    public String update() {
        try {
            getFacade().edit(current);
            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("MitgliederUpdated"));
            return "View";
        } catch (Exception e) {
            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
            return null;
        }
    }

    public String destroy() {
        current = (Mitglieder) getItems().getRowData();
        selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
        performDestroy();
        recreatePagination();
        recreateModel();
        return "List";
    }

    public String destroyAndView() {
        performDestroy();
        recreateModel();
        updateCurrentItem();
        if (selectedItemIndex >= 0) {
            return "View";
        } else {
            // all items were removed - go back to list
            recreateModel();
            return "List";
        }
    }

    private void performDestroy() {
        try {
            getFacade().remove(current);
            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("MitgliederDeleted"));
        } catch (Exception e) {
            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
        }
    }

    private void updateCurrentItem() {
        int count = getFacade().count();
        if (selectedItemIndex >= count) {
            // selected index cannot be bigger than number of items:
            selectedItemIndex = count - 1;
            // go to previous page if last page disappeared:
            if (pagination.getPageFirstItem() >= count) {
                pagination.previousPage();
            }
        }
        if (selectedItemIndex >= 0) {
            current = getFacade().findRange(new int[]{selectedItemIndex, selectedItemIndex + 1}).get(0);
        }
    }

    public DataModel getItems() {
        if (items == null) {
            items = getPagination().createPageDataModel();
        }
        return items;
    }

    private void recreateModel() {
        items = null;
    }

    private void recreatePagination() {
        pagination = null;
    }

    public String next() {
        getPagination().nextPage();
        recreateModel();
        return "List";
    }

    public String previous() {
        getPagination().previousPage();
        recreateModel();
        return "List";
    }

    public SelectItem[] getItemsAvailableSelectMany() {
        return JsfUtil.getSelectItems(ejbFacade.findAll(), false);
    }

    public SelectItem[] getItemsAvailableSelectOne() {
        return JsfUtil.getSelectItems(ejbFacade.findAll(), true);
    }

    @FacesConverter(forClass = Mitglieder.class)
    public static class MitgliederControllerConverter implements Converter {

        public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
            if (value == null || value.length() == 0) {
                return null;
            }
            MitgliederController controller = (MitgliederController) facesContext.getApplication().getELResolver().
                    getValue(facesContext.getELContext(), null, "mitgliederController");
            return controller.ejbFacade.find(getKey(value));
        }

        java.lang.Integer getKey(String value) {
            java.lang.Integer key;
            key = Integer.valueOf(value);
            return key;
        }

        String getStringKey(java.lang.Integer value) {
            StringBuffer sb = new StringBuffer();
            sb.append(value);
            return sb.toString();
        }

        public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
            if (object == null) {
                return null;
            }
            if (object instanceof Mitglieder) {
                Mitglieder o = (Mitglieder) object;
                return getStringKey(o.getIdMitglieder());
            } else {
                throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + Mitglieder.class.getName());
            }
        }
    }

    /**
     * Methode für die Umspeicherung vom DataModel in eine ArrayList
     * @return List<Mitglieder>
     */
    public List<Mitglieder> getListe() {
        // ArrayList und DataModel erstellen
        List<Mitglieder> liste = new ArrayList<Mitglieder>();
        DataModel model = getItems();
        // Größe des DataModels bestimmen
        int rowCount = model.getRowCount();
        // 3-Ecks-Tausch
        for (int i = 0; i < rowCount; i++) {
            model.setRowIndex(i);
            Object a = model.getRowData();
            liste.add((Mitglieder)a);
        }
        return liste;
    }    
}
 

Tramatnois

Mitglied
Controller: AdresseMitglieder
Java:
package de.jee6.shapeyourbody.business;

import de.jee6.shapeyourbody.model.AdresseMitglieder;
import de.jee6.shapeyourbody.business.util.JsfUtil;
import de.jee6.shapeyourbody.business.util.PaginationHelper;
import de.jee6.shapeyourbody.presentation.AdresseMitgliederFacade;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;

@ManagedBean(name = "adresseMitgliederController")
@SessionScoped
public class AdresseMitgliederController implements Serializable {

    private AdresseMitglieder current;
    private DataModel items = null;
    @EJB
    private de.jee6.shapeyourbody.presentation.AdresseMitgliederFacade ejbFacade;
    private PaginationHelper pagination;
    private int selectedItemIndex;

    public AdresseMitgliederController() {
    }

    public AdresseMitglieder getSelected() {
        if (current == null) {
            current = new AdresseMitglieder();
            selectedItemIndex = -1;
        }
        return current;
    }

    private AdresseMitgliederFacade getFacade() {
        return ejbFacade;
    }

    public PaginationHelper getPagination() {
        if (pagination == null) {
            pagination = new PaginationHelper(10) {
                @Override
                public int getItemsCount() {
                    return getFacade().count();
                }

                @Override
                public DataModel createPageDataModel() {
                    return new ListDataModel(getFacade().findRange(new int[]{getPageFirstItem(), getPageFirstItem() + getPageSize()}));
                }
            };
        }
        return pagination;
    }

    public String prepareList() {
        recreateModel();
        return "List?faces-redirect=true";
    }

    public String prepareView() {
        current = (AdresseMitglieder) getItems().getRowData();
        selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
        return "View?faces-redirect=true";
    }

    public String prepareCreate() {
        current = new AdresseMitglieder();
        selectedItemIndex = -1;
        return "Create?faces-redirect=true";
    }

    public String create() {
        try {
            getFacade().create(current);
            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("AdresseMitgliederCreated"));
            return prepareCreate();
        } catch (Exception e) {
            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
            return null;
        }
    }

    public String prepareEdit() {
        current = (AdresseMitglieder) getItems().getRowData();
        selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
        return "Edit?faces-redirect=true";
    }

    public String update() {
        try {
            getFacade().edit(current);
            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("AdresseMitgliederUpdated"));
            return "View";
        } catch (Exception e) {
            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
            return null;
        }
    }

    public String destroy() {
        current = (AdresseMitglieder) getItems().getRowData();
        selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
        performDestroy();
        recreatePagination();
        recreateModel();
        return "List";
    }

    public String destroyAndView() {
        performDestroy();
        recreateModel();
        updateCurrentItem();
        if (selectedItemIndex >= 0) {
            return "View";
        } else {
            // all items were removed - go back to list
            recreateModel();
            return "List";
        }
    }

    private void performDestroy() {
        try {
            getFacade().remove(current);
            JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("AdresseMitgliederDeleted"));
        } catch (Exception e) {
            JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
        }
    }

    private void updateCurrentItem() {
        int count = getFacade().count();
        if (selectedItemIndex >= count) {
            // selected index cannot be bigger than number of items:
            selectedItemIndex = count - 1;
            // go to previous page if last page disappeared:
            if (pagination.getPageFirstItem() >= count) {
                pagination.previousPage();
            }
        }
        if (selectedItemIndex >= 0) {
            current = getFacade().findRange(new int[]{selectedItemIndex, selectedItemIndex + 1}).get(0);
        }
    }

    public DataModel getItems() {
        if (items == null) {
            items = getPagination().createPageDataModel();
        }
        return items;
    }

    private void recreateModel() {
        items = null;
    }

    private void recreatePagination() {
        pagination = null;
    }

    public String next() {
        getPagination().nextPage();
        recreateModel();
        return "List";
    }

    public String previous() {
        getPagination().previousPage();
        recreateModel();
        return "List";
    }

    public SelectItem[] getItemsAvailableSelectMany() {
        return JsfUtil.getSelectItems(ejbFacade.findAll(), false);
    }

    public SelectItem[] getItemsAvailableSelectOne() {
        return JsfUtil.getSelectItems(ejbFacade.findAll(), true);
    }

    @FacesConverter(forClass = AdresseMitglieder.class)
    public static class AdresseMitgliederControllerConverter implements Converter {

        public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
            if (value == null || value.length() == 0) {
                return null;
            }
            AdresseMitgliederController controller = (AdresseMitgliederController) facesContext.getApplication().getELResolver().
                    getValue(facesContext.getELContext(), null, "adresseMitgliederController");
            return controller.ejbFacade.find(getKey(value));
        }

        java.lang.Integer getKey(String value) {
            java.lang.Integer key;
            key = Integer.valueOf(value);
            return key;
        }

        String getStringKey(java.lang.Integer value) {
            StringBuffer sb = new StringBuffer();
            sb.append(value);
            return sb.toString();
        }

        public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
            if (object == null) {
                return null;
            }
            if (object instanceof AdresseMitglieder) {
                AdresseMitglieder o = (AdresseMitglieder) object;
                return getStringKey(o.getIdAdresse());
            } else {
                throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + AdresseMitglieder.class.getName());
            }
        }
    }
    
    /**
     * Methode für die Umspeicherung vom DataModel in eine ArrayList
     * @return List<AdresseMitglieder>
     */
    public List<AdresseMitglieder> getListe() {
        // ArrayList und DataModel erstellen
        List<AdresseMitglieder> liste = new ArrayList<AdresseMitglieder>();
        DataModel model = getItems();
        // Größe des DataModels bestimmen
        int rowCount = model.getRowCount();
        // 3-Ecks-Tausch
        for (int i = 0; i < rowCount; i++) {
            model.setRowIndex(i);
            Object a = model.getRowData();
            liste.add((AdresseMitglieder) a);
        }
        return liste;
    }
}
 

Tramatnois

Mitglied
Hoffe das hilft dir weiter?

Bitte bei der 2. List.xhtml beachten, dass ich versucht habe die Adresse relevanten Daten versucht habe auzukommentieren, nur um dir / euch zu zeigen, wie meine Idee ursprünglich war.. ;-)
 

Tramatnois

Mitglied
was ich bezüglich der Adresse in Tabelle Mitglieder hinbekommen habe ist folgendes:

Directupload.net - 529zx7k6.png

dafür habe ich in der Entity Class AdresseMitglieder folgendes gemacht:

Java:
@Override
    public String toString() {
        //return "de.jee6.shapeyourbody.model.AdresseMitglieder[ idAdresse=" + idAdresse + " ]";
        return "idAdresse:" + idAdresse + "| Straße:" + strasse + "| Nummer:" + nummer + "| Plz:" + plz + "| Ort:" + ort +" ]";
    }

//return . . . = war vorher
return . . . = sorgt die Ausgabe der Werte aus den Spalten der Tabelle AdressenMitglieder

Aber ich denke das wäre dann eher der falsche weg oder? :) Da es auch nicht wirklich schön aussieht... ;-)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S AJAX/RestController Post Problem Web Tier 18
pkm Problem beim Import eines dynamischen Webprojekts als .zip Web Tier 2
O JSF Java Unsigned Applet PrivilegedActionException Problem Web Tier 2
F JSF preRenderView Problem Web Tier 0
J Funktion für AJAX - Problem mit Return Web Tier 14
S Problem mit Checkboxen im Servlet erkennen Web Tier 3
N JSF JSF Selected Item & GesBetrag Problem Web Tier 1
Shams Problem mit der verwirklichung einer Readmethode in einer Chatapplikation Web Tier 3
F JSF Problem mit Primefaces Web Tier 7
F JSF Problem mit Primefaces Web Tier 4
F JSP Problem mit Property Web Tier 0
D Java EE Servlet login Problem Web Tier 1
L java.io.NotSerializableException für domain Objekte - Design Problem? Web Tier 12
T JSF Character Encoding Problem Web Tier 2
H JSF Problem mit Converter Web Tier 2
M Zeichensatz Problem? Web Tier 3
T JSF Problem wenn Session abgelaufen ist Web Tier 6
K JSF websphere application server 8 tomahawk problem Unable to find resource Web Tier 3
D JSF RichFaces Tree-Beispiel Problem Web Tier 2
J JSF Problem mit Bearbeiten von Datensätzen Web Tier 7
M JSF Problem mit CSS und Unterverzeichnissen Web Tier 2
M JSP Problem beim deployen auf Tomcat Web Tier 2
P Servlet getWidth(); - getHight(); Problem Web Tier 3
J JSP Problem bei Hibernate mit JSP Web Tier 2
M JSF mit Tobago Problem: ServletContextListener Web Tier 5
J Facelets javascript compiler problem Web Tier 3
T Tomcat mit Servlets Problem Web Tier 7
T Servlet Problem bei gwt rpc Web Tier 7
S Servlet Problem mit Tomcat Web Tier 3
J JSF Kein Methodenaufruf mit Button möglich durch PhaseListener (redirect) Problem? Web Tier 2
P rich:panelMenuGroup --> expanded Parameter Problem Web Tier 3
F.S.WhiTeY Tmplating/CSS Problem bei JSF Web Tier 7
A ice:inputText Converter Problem Web Tier 2
B JSF Tomcat Windows Linux equals Problem Web Tier 3
R JSF JSF Composite Components: Problem mit Attributliste und Referenzierung Web Tier 2
M Problem mit Hibernate und GWT Web Tier 6
O JSP struts2 tag: Problem mit Dezimalzahlen Web Tier 2
P Struts Struts2 if tag Problem mit getText() Web Tier 3
B Java EE 6 Problem (EL) Web Tier 4
ruutaiokwu beanshell scope problem... Web Tier 7
P Problem mit HTML.Tag.OPTION Web Tier 3
N Problem mit Datei Streaming Web Tier 2
M Problem mit Verlinkung JSP Dynamische Tabelle Web Tier 7
S Architektur-Problem? 2 Servlets, ein Objekt Web Tier 4
F.S.WhiTeY JSF:org.apache.jasper.JasperException Problem Web Tier 2
H Richfaces - Taglib Problem gelb unterstrichen Ajax Output Web Tier 6
N Servlet: Problem mit getParameterValues Web Tier 4
7 Struts und Ajax. Problem mit Actions Web Tier 2
J GWT - RPC Problem Web Tier 6
F Problem mit JSF Anwendung Web Tier 9
I Logout - Problem => Bei Zurück Web Tier 2
I AJAX - Problem Web Tier 18
F Problem mit Struts Web Tier 2
I selectOneMenu - Problem Web Tier 6
H Firefox Background-Image Problem Web Tier 4
E GWT Server-Client Problem Web Tier 3
J Log4j problem Web Tier 7
F Problem mit der Methode request.getRemotePort() Web Tier 2
S GWT Problem Web Tier 4
M Problem mit Velocity Web Tier 2
S OSGi Bundle Problem - ClassNotFound Web Tier 4
J JSF Locales Problem Web Tier 3
J Problem mit Login Web Tier 4
MQue jsp- Problem Web Tier 4
P Problem der Parameterübergabe aus Iframe Web Tier 15
A Tomcat: beim Start des Servers einmalige Aktion aufrufen (Problem gelöst) Web Tier 2
R JSF <rich:datatable> problem Web Tier 4
S JSF Problem - Terminverwaltung - Ändern eines vorhandenen Termins Web Tier 2
S Filter Problem? Web Tier 6
E Problem mit t:saveState Web Tier 7
S Problem mit Anzeige zweier JSP's Web Tier 4
M Problem mit JSP und Bean Web Tier 2
F RichFaces, Problem mit PickList Web Tier 2
S Problem mit Servlet und Zugriff auf Orace XE Datenbank Web Tier 2
E Problem mit request.getParameter Web Tier 5
B getServletContext.getRealPath("/") Problem Web Tier 6
C Problem mit Hibernate und IceFaces Web Tier 2
S Problem mit Session - Übergabe von Kontext zu Kontext Web Tier 2
H problem bei Parameterübergabe mit beans Web Tier 3
U JSP form-Daten (ohne name-Attribut) an Servlet = Problem Web Tier 6
S jsf: übles problem mit <f:convertDateTime> Hilfe! Web Tier 2
A Selectbox Problem in JSP Web Tier 12
T Problem bei Session-Timeout Web Tier 3
S problem mit resultset Web Tier 6
U Problem bei Validierung mit Struts 2 Web Tier 1
A JSF-Ctrl h:inputText Problem mit Umlauten Web Tier 4
E Wie kann ich dynamische HTML- Tabellen(-spalten) mit JSP aus SELECT-Anweisung erstellen? Web Tier 2
T Spring HTML Tabellen sortieren, filtern, Attribute ausblenden Web Tier 3
K RichFaces Geschwindigkeit bei Tabellen Web Tier 3
F Struts Tabellen Web Tier 3
S Tabellen in JSP Web Tier 3
A JSF: editirbare Tabellen und ähnliches Web Tier 5

Ähnliche Java Themen

Neue Themen


Oben