JSF Daten werden nicht aktualisiert aus Datenbank gelesen

Rallenaldo

Mitglied
Hallo.

Ich habe bei meiner Java EE Anwendung ein Problem, dass mir nun schon seit mehreren Stunden Kopfschmerzen bereitet und ich nicht weiß wie ich es lösen soll.

Folgendes Szenario:

Ein User ist eingeloggt und legt eine Firma an. Diese Firma wird korrekt in die Datenbank eingetragen(Keine Fehlermeldungen). Wenn der User jetzt innerhalb des User-Kontrollzentrums auf einen Link klickt gelengt er zu einer Übersichtsseite über seine Firmen. Für jede Firma, die noch kein "Showcase"-Entity hat, wird nun durch eine Methode automatisiert ein Showcase-Entity erstellt. Auch hier gibt es keine Fehlermeldungen und die Entities werden korrekt in die Datenbank eingetragen.

Leider funktioniert die Ausgabe der Liste nicht richtig. Die soeben neu erstelle Firma wird aufgelistet, aber z.B. die ShowcaseId wird nicht ausgegeben. Erst nachdem ich bei Netbeans "Clean & Build" und anschließend "Run" ausführe, wird die Liste komplett dargestellt.

ShowcaseListProducer:

Java:
package de.zerrenda.zerrendaee6.data;

import de.zerrenda.zerrendaee6.beans.LoginBean;
import de.zerrenda.zerrendaee6.entities.Company;
import de.zerrenda.zerrendaee6.entities.Showcase;
import de.zerrenda.zerrendaee6.qualifiers.Added;
import de.zerrenda.zerrendaee6.services.ShowcaseService;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import javax.inject.Named;

@Named
@RequestScoped
public class ShowcaseListProducer {

    @Inject
    private ShowcaseService showcaseService;

    @Inject
    private LoginBean loginBean;

    private List<Showcase> showcaseList;
    private List<Company> companyList = new ArrayList<>();

    public List<Showcase> getShowcaseList() {
        return showcaseList;
    }

    public void setShowcaseList(List<Showcase> showcaseList) {
        this.showcaseList = showcaseList;
    }

    public List<Company> getCompanyList() {
        return companyList;
    }

    public void setCompanyList(List<Company> companyList) {
        this.companyList = companyList;
    }

    public void onShowcaseAdded(@Observes @Added Showcase showcase) {
        System.out.println("onShowcaseAdded des ShowcaseListProducers wird ausgeführt");
        showcaseService.addShowcase(showcase);
    }

    @PostConstruct
    public void init() {
        showcaseList = showcaseService.getAllShowcases();
        createShowcaseList();
    }

    public void createShowcaseList() {

        for (Showcase showcase : showcaseList) {
            if (showcase.getCompany().getUser().equals(loginBean.getLoggedInUser())) {
                companyList.add(showcase.getCompany());
            }
        }
    }

}

Showcase.xhtml

HTML:
<?xml version='1.0' encoding='UTF-8' ?>
<!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:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
    
    <h:head>
        <f:metadata>
            <f:event type="preRenderView" listener="#{showcaseEditController.checkShowcase(loginBean.loggedInUser)}" />
            <f:event type="preRenderView" listener="#{showcaseListProducer.init()}" />
        </f:metadata>
    </h:head>

    <body>

        <ui:composition template="./../META-INF/templates/template.xhtml">

            <ui:define name="sidebar column-left">
                <ui:include src="./../META-INF/templates/userCenterNavigation.xhtml"/>
            </ui:define>
            <ui:define name="page-content">
               
                <c:forEach items="#{showcaseListProducer.companyList}" var="company">
                <div style="padding: 10px ">
                        <div style="padding: 10px">
                            <h:form>
                                <h:panelGrid columns="2">
                                        <h:outputText value="ShowcaseLink: " />
                                        <h:outputText value="http://www.zerrenda.de/register.xhtml?promotedBy=#{company.showcase.showcaseId}" />
                                    <h:outputText/>
                                    <h:outputText  value="#{company.companyName} + #{company.showcase.showcaseId}" />
                                </h:panelGrid>
                            </h:form>
                        </div>
                    </div>   
                </c:forEach>
            </ui:define>
        </ui:composition>
    </body>
</html>
 

Joose

Top Contributor
Verrate uns doch bitte die Lösung, es gibt häufiger solche Probleme und da wäre es sich er hilfreich wenn du deine postest.
Danke! :)
 

Rallenaldo

Mitglied
Ich weiß nicht, ob es die Musterlösung ist, aber ich habe mir anstelle einer List<Company> eine List<Showcase> ausgeben lassen. Das war es im groben eigentlich.

Ich habe quasi nur eine neue Liste erstellt und diese dann für die Ausgabe verwendet. Bin mir nicht sicher, ob das hilfreich für andere ist
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Daten werden nicht gespeichert mit Spring + JPA (Hibernate): Data Tier 6
L JSP Mit Java-Daten von einer Webseite zu ziehen? Data Tier 5
C Hibernate ProgressBar updaten mit Daten aus Hibernate Data Tier 4
M Hibernate Hibernate liest Daten zu oft aus! Data Tier 16
R Hibernate daten laden Data Tier 7
S JPA und Versionsmanagement der Daten Data Tier 2
V Daten speichern Data Tier 7
T DB Daten beim Anlegen neuer EntityManagerFactory verloren Data Tier 3
M DB Anwendung - Daten auf ext. Server - Anregungen? Data Tier 5
N JPA Änderungen werden nicht gespeichert Data Tier 2
D Hibernate Tabellen werden nicht mehr erstellt Data Tier 2
R Beim deployen und initialisieren der DB werden Umlaute nicht gespeichert Data Tier 5
N Gerade so viele Parents auswählen, dass mindestens 20 Children angezeigt werden Data Tier 7
A Fehlermeldung: Tabellen werden nicht gefunden Data Tier 2
N Spring / OpenJPA Inheritance: Subklassen werden nicht erkannt Data Tier 4
N Entity-Object muss auf Client aktualisiert werden Data Tier 13
J Umstieg von Wildfly 13->14, JPA 2.1->2.2, schreiben funktioniert nicht mehr Data Tier 10
O JPA Persistieren mit JTA funktioniert nicht Data Tier 0
G JPA kann Objekt nicht löschen Data Tier 4
G Zuweisen von eigenen DB-Verbindungen nicht möglich Data Tier 3
M HibernateTemplate löscht nicht ohne flush() Data Tier 0
S JPA Cascade: Entity nur speichern, wenn sie nicht schon existiert Data Tier 0
E JPA Session.delete einer Entity wird nicht ausgeführt Data Tier 2
Kenan89 9.2-1000 JDBC 4 nicht für Java EE ? Data Tier 3
neonfly <exclude-unlisted-classes>true</exclude-unlisted-classes> mag <class>package.Klasse</class> nicht Data Tier 2
K JPA One2Many-Set erkennt seine Inhalte nicht wieder Data Tier 3
B Datensatz wird nicht in DB geschrieben! Data Tier 2
N Löschen OneToMany Beziehung (delete-orphan) geht nicht Data Tier 2
T JPA2/Hibernate: Many-to-Many-Relation wird u.a. beim löschen nicht aktualisiert Data Tier 14
Landei JPA - persist persisted nicht Data Tier 4
D jpa/eclipselink setMaxResults() funktioniert nicht mit MySql?! Data Tier 9
D jpa "pessimistic lock" funktioniert nicht?! Data Tier 11
L Hibernate - Tabelle nicht gemappt!? Data Tier 4
H Log4J loggt Hibernate nicht in Kombination mit Tomcat Data Tier 2
W JPA Persistenz 2x hintereinander funktioniert nicht Data Tier 3
W JPA generiert die Tabellen bzw. die DDL Files nicht Data Tier 6
D Hibernate: Objekt wird nicht gelöscht. Data Tier 5
K Hibernate: OneToOne funktioniert nicht Data Tier 3
D Hibernate schreibt nicht in DB Data Tier 1

Ähnliche Java Themen

Neue Themen


Oben