JSF Bestimmte Daten aus der Datenbank anzeigen lassen

Crusher55

Mitglied
Hallo liebes Forum Team,

habe wieder ein problem wo ich nicht mehr weiter weiß, undzwar geht es um eine Bestands Seite, wo ich den Artikel aussuche und er mir denn Aktuellen Bestand und vlt auch andere sachen über den Artikel ausgibt. Bezüglich dieses Projektes muss ich leider mit DataModelList arbeiten was mir alles verkompliziert.

WWS.Java
Java:
    package controller;
     
    import javax.annotation.PostConstruct;
    import javax.annotation.Resource;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import javax.faces.model.DataModel;
    import javax.faces.model.ListDataModel;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.transaction.HeuristicMixedException;
    import javax.transaction.HeuristicRollbackException;
    import javax.transaction.NotSupportedException;
    import javax.transaction.RollbackException;
    import javax.transaction.SystemException;
    import javax.transaction.UserTransaction;
    import model.Artikel;
    import model.Flaschenart;
    import model.Volumen;
     
    @ManagedBean(name = "mbWWS")
    @SessionScoped
     
    public class WWS {
     
        public WWS(){}
     
        private DataModel<Artikel> wws = new ListDataModel<Artikel>();
       
        @PersistenceContext
        private EntityManager em;
     
        @Resource
        private UserTransaction utx;
       
        private Artikel merkeArtikel = new Artikel();
     
        public void init() {
        try {
        utx.begin();
        em.persist(new Artikel("hugo", Volumen.Large, 15,20, Flaschenart.Glas, 6,15,15,15));
        em.persist(new Artikel("hans", Volumen.Large, 15,20, Flaschenart.Glas, 5,15,15,15));
            wws.setWrappedData(em.createNamedQuery("SelectWWS").getResultList());
            utx.commit();
        } catch (Exception e) {
                e.printStackTrace();
    }  
        }
        public Artikel getMerkeArtikel() {
            return merkeArtikel;
        }
       
        public void setMerkeArtikel(Artikel merkeArtikel) {
            this.merkeArtikel = merkeArtikel;
        }
       
        public DataModel<Artikel> getWws() {
            return wws;
        }
     
        public void setWws(DataModel<Artikel> wws) {
            this.wws = wws;
        }
    @SuppressWarnings("unchecked")
	public List<Artikel> getArtikelListFromWrapper() {
        this.artikelList = (ArrayList<Artikel>) this.wws.getWrappedData();
        
        return artikelList;
     }
	public String edit() {
		merkeArtikel = wws.getRowData();
		return "bestand";
	}
    }

Artikel.Java
Java:
    import javax.persistence.Entity;
    import javax.persistence.Enumerated;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.NamedQuery;
    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Size;
     
    @NamedQuery(name="SelectWWS", query="Select a from Artikel a")
    @Entity
     
    public class Artikel {
       
        private static final long serialVersionUID = 2615809714551834760L;
        @Id @GeneratedValue(strategy=GenerationType.AUTO)
        private Integer id;
        @Size(min=1, max=30)
        String marke;
        @Enumerated
        Volumen volumen;
        @NotNull
        int anzKi;
        @NotNull
        int anzFl;
        @Enumerated
        Flaschenart flaschenart;
        @NotNull
        double steuersatz;
        @NotNull
        double gewinn;
        @NotNull
        double einkaufspreis;
        @NotNull
        double verkaufspreis;
        String Fehler;
       
        public Artikel(){
           
        }
       
        public Artikel(String marke,Volumen volumen,int anzKi,int anzFl,Flaschenart flaschenart,double steuersatz,double gewinn,double einkaufspreis,double verkaufspreis){
            super();
            this.marke = marke;
            this.volumen = volumen;
            this.anzKi = anzKi;
            this.anzFl = anzFl;
            this.flaschenart = flaschenart;
            this.steuersatz = steuersatz;
            this.gewinn = gewinn;  
            this.einkaufspreis = einkaufspreis;
            this.verkaufspreis = verkaufspreis;
       
        }
    //Getter und Setter
    }
Bestand.xhtml

HTML:
<h:outputLabel for="marke" value="Artikel: " />
		<p:selectOneMenu id="marke" value="#{mbWWS.artikelListFromWrapper}" required="true">
		<f:selectItems value="#{mbWWS.artikelListFromWrapper}" var="artikel" itemLabel="#{artikel.marke}" itemValue="#{artikel}"/>
	 <p:ajax event="valueChange" update="grid" />
		</p:selectOneMenu> 
		
		<h:outputLabel for="anzKi" value="Kistenanzahl:" />
		<h:outputText  value="#{mbWWS.merkeArtikel.anzKi}" required="true" immediate="true"  />

Das ausfüllen der Felder bekomm ich hin, wenn ich die Bestands Seite mit einer Methode aufrufe und mit den befehl. merkeKunde = wws.getRowData(); arbeite bekomm leider nur die zuletzt benutzten Daten.

Ich hoffe ihr könnt mir helfen.
 
F

fisherman

Gast
wws.getRowData(); arbeite bekomm leider nur die zuletzt benutzten Daten.
Genau das gibt die Methode getRowData() ja auch zurück, wenn der Index auf dem letzten Element steht. Wenn du die ganze Liste oder mehrere Einträge aus der Liste willst, musst du sie dir aus dem Wrapper-Objekt holen: getWrappedData(). Steht auch so in der Doku zu DataModel bzw. ListDataModel.
 

Crusher55

Mitglied
Hab es mal so versucht wie du es beschrieben hast und versucht auf den einzelnen eintrag der Liste zuzugreifen, bekomme aber leider dann einen convertierungsfehler.

HTML:
<p:dataTable id="grid" var="artikel" value="#{mbWWS.artikelListFromWrapper}" columns="2" cellspading="5" headerClass="header" footerClass="footer">  
    	<f:facet name="header">  Artikel Bestand    </f:facet>  
 
    	<h:outputLabel for="marke" value="Artikel: " />
		<p:selectOneMenu id="marke" value="#{mbWWS.artikelListFromWrapper}" required="true">
		<f:selectItems value="#{mbWWS.artikelListFromWrapper}" var="artikel" itemLabel="#{artikel.marke}" itemValue="#{artikel}"/>
	 <p:ajax event="valueChange" update="grid" />
		</p:selectOneMenu> 
		
		<h:outputLabel for="anzKi" value="Kistenanzahl:" />
		<h:outputText  id="anzKi" value="#{artikel.anzKi}" />

	</p:dataTable>
 
F

fisherman

Gast
Diese View ergibt keinen Sinn. Du vermischst eine Tabelle mit einem Auswahlmenü und verwendest für beide die gleiche Quelle. Hast du dir die Showcases von PrimeFaces schon angeschaut? Sieht nämlich nicht danach aus.
Gib doch außerdem konkret an, in welcher Zeile in der View und im Bean das Problem auftaucht und welche Fehlermeldung geworfen wird.
 

Crusher55

Mitglied
ok die Fehlermeldung habe ich nicht mehr habe es umgeschrieben, bekomme auch die Anzahl aus der Liste ausgegeben.
Doch wenn ich einen Artikel aussuche und das feld aktuallisiere ist es danach leer.

HTML:
<p:panelGrid id="grid" var="artikel" value="#{mbWWS.artikelList}" columns="2" cellspading="5" headerClass="header" footerClass="footer">  
    	<f:facet name="header">  Artikel Bestand    </f:facet>  
 
    	<h:outputLabel for="marke" value="Artikel: " />
		<p:selectOneMenu id="marke" value="#{mbWWS.artikelListFromWrapper}" required="true">
		<f:selectItems value="#{mbWWS.artikelListFromWrapper}" var="artikel" itemLabel="#{artikel.marke}" itemValue="#{artikel}"/>
	    <p:ajax update="anz" />
		</p:selectOneMenu>  
		
		<h:outputText value="Kistenanzahl:" />
		<h:outputText id="anz" value="#{artikel.anzKi}" />

	</p:panelGrid>
 
F

fisherman

Gast
HTML:
<p:selectOneMenu id="marke" value="#{mbWWS.artikelListFromWrapper}" required="true">
<f:selectItems value="#{mbWWS.artikelListFromWrapper}" var="artikel" itemLabel="#{artikel.marke}" itemValue="#{artikel}"/>
Das ergibt ebenfalls keinen Sinn. selectOneMenu erhält das ausgewählte Element, selectItems die Liste der auswählbaren Elemente.
 

Crusher55

Mitglied
Habe es entsprechend geändert, doch komme immer noch nicht weiter. Muss ich hier eventuell mit DataTable arbeiten?

HTML:
<p:panelGrid id="grid" var="artikel" value="#{mbWWS.artikelList}" columns="2" cellspading="5" headerClass="header" footerClass="footer">  
    	<f:facet name="header">  Artikel Bestand    </f:facet>  
 
    	<h:outputLabel for="marke" value="Artikel: " />
		<p:selectOneMenu id="marke" value="#{mbWWS.merkeArtikel.marke}" required="true">
		<f:selectItems value="#{mbWWS.artikelListFromWrapper}" var="artikel" itemLabel="#{artikel.marke}" itemValue="#{artikel}"/>
	    <p:ajax update="anz" />
		</p:selectOneMenu>  
		
		<h:outputText value="Kistenanzahl:" />
		<h:outputText id="anz" value="#{artikel.anzKi}" />

	</p:panelGrid>
 
F

fisherman

Gast
Für mich sieht das aus, als ob du wild irgendwas rumprobierst, ohne darüber nachzudenken, was der Code überhaupt soll. So drehen wir uns allerdings im Kreis.
Crusher55 hat gesagt.:
HTML:
<p:panelGrid id="grid" var="artikel" value="#{mbWWS.artikelList}" columns="2" cellspading="5" headerClass="header" footerClass="footer">
p:panelGrid kennt kein Attribut value. Es ergibt auch keinen Sinn, weil es ein Container-Tag ist.
 

Crusher55

Mitglied
Bin halt noch ein Anfänger bezüglich JSF, bin erst seit paar wochen dabei und ist auch nur ein einmaliges Projekt. Deswegen kann es dazu kommen das ich manchmal dumme Fragen stelle.

Nun weiter, was ich nicht verstehe ist wenn ich Probeweise als Ausgabe die Marke ausgeben lasse die ich ausgewählt habe bekomme ich nur die Adressierung des Feldes.

HTML:
	<p:panelGrid id="grid" columns="2"  headerClass="header">
 
    	<f:facet name="header">  Artikel Bestand    </f:facet>  
 
    	<h:outputLabel for="marke" value="Artikel: " />
		<p:selectOneMenu id="marke" value="#{mbWWS.merkeArtikel.marke}" required="true">
		<f:selectItems value="#{mbWWS.artikelListFromWrapper}" var="artikel" itemLabel="#{artikel.marke}" itemValue="#{artikel}"/>
	    <p:ajax update="anz" />
		</p:selectOneMenu>  
		
		<h:outputText value="Kistenanzahl:" />
		<h:outputText id="anz" value="#{mbWWS.merkeArtikel.marke}" />
		
	</p:panelGrid>
 
F

fisherman

Gast
HTML:
<p:selectOneMenu id="marke" value="#{mbWWS.merkeArtikel.marke}" required="true">
<f:selectItems value="#{mbWWS.artikelListFromWrapper}" var="artikel" itemLabel="#{artikel.marke}" itemValue="#{artikel}"/>
Das ausgewählte Element sollte logischerweise vom gleichen Typ sein wie die auswählbaren Elemente in der Liste.
 

Crusher55

Mitglied
So habe dieses Problem auch bewältigen können, nun habe ich aber immer noch mein Grundproblem das wenn ich einen Artikel auswähle und danach das Feld Kistenanzahl aktuallisiere bekomme ich nicht den dazugehörigen Wert.

HTML:
	<p:panelGrid id="grid" columns="2"  headerClass="header">
 
    	<f:facet name="header">  Artikel Bestand    </f:facet>  
 
    	<h:outputLabel for="marke" value="Artikel: " />
		<p:selectOneMenu id="marke" value="#{mbWWS.merkeArtikel.marke}" required="true">
		<f:selectItems value="#{mbWWS.artikelListFromWrapper}" var="artikel" itemLabel="#{artikel.marke}" itemValue="#{artikel.marke}"/>
	    <p:ajax update="anz" />
		</p:selectOneMenu>  
		
		<h:outputText value="Kistenanzahl:" />
		<h:outputText id="anz" value="#{mbWWS.merkeArtikel.anzKi}" />
		
	</p:panelGrid>
 

Crusher55

Mitglied
Also muss ich mit listener arbeiten und eine Methode aufrufen die Theoretisch den Artikel Namen vergleicht und wenn es dann zutrifft die Kistenanzahl zurückliefert?

Doch das ist nicht direkt was ich will, ich will genau auf den richtigen Index der Liste wechseln so das ich alle Daten des Artikels habe, nur weis ich nicht genau wie ich das mache und welche Liste ich dafür anvisiere die Arrayliste, die ich aus der Wrapper klasse habe oder die DataModelList?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JSF Nur bestimmten Rollen bestimmte Inhalte anzeigen... Allgemeines EE 2
J nur bestimmte Mapping-Dateien berücksichtigen (Hibernate) Allgemeines EE 14
looparda JPA Persistenz vom in GUI veränderten Daten-Modell Allgemeines EE 7
S JSP Zwischen zwei Formularen Daten austauschen Allgemeines EE 0
P Daten von HTML and JSP schicken Allgemeines EE 0
D Apache POI Probleme mit Daten(Datum) die aus Formeln entstehen Allgemeines EE 3
M Daten aus der Resource werden nicht übernommen Allgemeines EE 4
H SQL Daten von Webservice an Client übergeben Allgemeines EE 3
F Servlet Daten im Speicher ablegen Allgemeines EE 3
T Scopes - Daten in JSF-Formular anlegen/bearbeiten, Felder vorbelegen Allgemeines EE 3
A Anfängerfrage: daten in datenbank speichern Allgemeines EE 8
K Daten aus ApplicationServer auf Website darstellen Allgemeines EE 5
C daten von php zu jsp Allgemeines EE 3
MQue Server -> Client zyklische Daten senden Allgemeines EE 20
W Daten mit j2ee aus datenbank abfragen Allgemeines EE 8
M Daten aus JavascriptSeite von Java auswerten lassen Allgemeines EE 3
I Über Formular Daten zu Servlet Allgemeines EE 36
B Session Daten pro User merken Allgemeines EE 9
M EJB Löschen von DB-Daten beim Deployen verhindern Allgemeines EE 2
B JSF - selectOneMenu mit Daten aus faces-config füllen Allgemeines EE 5
J Socket daten darstellen per jsp,servlet Allgemeines EE 2
S Downloadbox auch ohne Daten erzwingen // Content-Disposition Allgemeines EE 6
S Daten in Java schreiben und PHP lesen Allgemeines EE 8
L speichern von daten mittels servlet in xml Allgemeines EE 8
P Tomcat Servlet POST Daten als Array Allgemeines EE 2
S Best-Practice? Daten über Tier-Grenzen hinweg? Allgemeines EE 2
V Bean-Daten in JSF-JSP finden Allgemeines EE 3
D Bekomme DAten von einen Jsp nicht in den Tag Handler Allgemeines EE 2
S JSP - geschichtliche Daten Allgemeines EE 4
F Session Bean -> Daten aus dem Servlet holen Allgemeines EE 11
D Abfrage der header daten funktionieren nicht. Allgemeines EE 2
G Daten aus Inputfeldern in Tabelle speichern Allgemeines EE 6
A JSF - Daten in Session speichern Allgemeines EE 2
S Daten in ein Excel file exportieren Allgemeines EE 3
S Post und Get Daten Allgemeines EE 5
clemson Daten aus Email holen Allgemeines EE 4
J Formular aktualisieren-Daten werden erneut in DB geschrieben Allgemeines EE 6
H daten in session speichern Allgemeines EE 8
A Tabstopp-getrennte Daten üb. Webformular in Datenbank laden! Allgemeines EE 2
T Daten aus der Webseite (JSP) als .txt speichern Allgemeines EE 8
M servlet daten einlesen -> hashmap speichern Allgemeines EE 3
M Speicherung von Daten und JSP Allgemeines EE 9
B Newsletter versenden - Datenbank Design Allgemeines EE 0
E Spring Fileverwaltung in Datenbank oder Logfile? Allgemeines EE 2
L JavaEE Webanwendung - Datenbank-Verbindung aufbauen Allgemeines EE 18
D JSON abspeichern mit gleichen Datenbank Eintrag Allgemeines EE 3
P JSF Wohin kommt die .db Datei der Datenbank? Allgemeines EE 2
B Integrierte Datenbank in Wildfly Server Allgemeines EE 2
B Datenbank Resource wird nicht gefunden Allgemeines EE 1
J JSTree in Web-App: Datenbank-Beziehungen verschwinden nach unbestimmter Zeit Allgemeines EE 4
J JSF Glassfish jdbcRelam und Oracle-Datenbank - WEB9102: Web Login Failed Allgemeines EE 0
T Strings - Partieller Abgleich mit Datenbank Allgemeines EE 4
D GWT mit Hibernate und Sql Datenbank Allgemeines EE 2
I JSF Userbild in die Datenbank machen? Allgemeines EE 6
R Je nach Benutzer anderes Datenbank-Schema auswählen Allgemeines EE 4
J XML vs. Datenbank vs. lokale Ordnerstruktur Allgemeines EE 6
J ejb3.0 datenbank problem Allgemeines EE 2
remus JBoss Authentifizierung mit MYSQL-Datenbank Allgemeines EE 4
H Eine Datenbank - 1 Datenmodell - 2 Anwendungsumgebungen Allgemeines EE 2
E JBoss Hibernate Datenbank-Timeout Allgemeines EE 3
T Wie Datenbank und Servlet koppeln? Allgemeines EE 3
G Entity Bean ignoriert Datenbank Allgemeines EE 16
N Warenkorb ohne Datenbank Allgemeines EE 2
M Servlet (Bilder aus Datenbank liefern) läuft nur einige Zeit Allgemeines EE 12
S String escpapen für JavaScript, Datenbank, HTML Allgemeines EE 2
F Datenbank und JSF Allgemeines EE 2
P struts "beliebige motive in der datenbank finden" Allgemeines EE 6
T XML, Beans, Datenbank. Kann mir jemand helfen? Allgemeines EE 5
K [Tomcat 5.5.12+Axis] Datenbank Zugriff Allgemeines EE 2
T Bildfolge in Datenbank Allgemeines EE 2
P EJB3-Standard und dafür geeignetste SQL-Datenbank Allgemeines EE 21
H Datenbank Abfragen mit EJB Allgemeines EE 9

Ähnliche Java Themen

Neue Themen


Oben