JSF: dataTable Getter wird nie aufgerufen

Status
Nicht offen für weitere Antworten.

Vale

Mitglied
Hallo.

Ich habe ein Problem auf dessen Lösung ich nicht komme. Vielleicht habt ihr einen Rat.

Hier eine kurze Beschreibung:
  • dataTable
  • Getter wird nie aufgerufen -> Tabelle immer leer
  • keinerlei Fehlermeldungen

JSF-Code. Es geht um das dataTable "tableContracts" in der Mitte des Codes.
HTML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ 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 XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    </head>
    <body>
        <f:view>
            <h:outputText style="font-size: 3em; font-family: Verdana" value="Activity"></h:outputText>
            <h:outputText style="font-family: Verdana" value="Version: Prototyp 2"></h:outputText>
            <h:graphicImage style="position: absolute; top:-0.1%; left:89%" value="/resources/pics/isys.gif"></h:graphicImage>
            </hr>
            <h:form id="form">
            <h:panelGrid id="tableFormat" columns="1" width="800" border="1" cellpadding="0" cellspacing="5">
                <h:panelGrid  id="tableSelection" columns="3" border="0" cellpadding="0" cellspacing="10" width="800">
                    <h:panelGroup style="text-align: left;">
                        <h:outputLabel value="Mitarbeiter bearbeiten: " for="employeeSelection" style="font-family: Verdana; font-size: x-small"/>
                        <h:selectOneMenu id="employeeSelection"
                                         value="#{EmployeeMgmtBean.employeeId}"
                                         valueChangeListener="#{EmployeeMgmtBean.chooseEmployee}"
                                         immediate="true"
                                         onchange="submit();">
                            <f:selectItem itemValue="0" itemLabel="--- Bitte auswählen ---"/>
                            <f:selectItems value="#{EmployeeMgmtBean.employeeList}"/>
                       </h:selectOneMenu>
                    </h:panelGroup>
                    <h:panelGroup style="text-align: center;">
                        <h:commandButton id="newButton" value="Mitarbeiter erstellen" action="#{EmployeeMgmtBean.newEmployee}" 
                                         disabled="#{EmployeeMgmtBean.isCreateButtonDisabled}" immediate="true"/>
                    </h:panelGroup>
                    <h:panelGroup  style="text-align: right;">
                        <h:commandButton id="saveButton" value="Speichern" action="#{EmployeeMgmtBean.saveEmployee}"
                                         disabled="#{EmployeeMgmtBean.isSaveButtonDisabled}"/>
                    </h:panelGroup>
                </h:panelGrid>
            <!-- Eingabefelder -->
            <h:panelGrid id="tableInput" columns="2" style="font-family: Verdana; font-size: x-small">
                <h:panelGrid columns="2">
                    <h:panelGrid columns="2"> <!-- EMPLOYEE -->
                        <f:facet name="header">
                            <h:outputText value="Daten von:   #{EmployeeMgmtBean.employeeName}"/>
                        </f:facet>
                        <h:outputLabel value="Vorname: *"  for="firstName"/>
                        <h:inputText id="firstName" 
                                 value="#{EmployeeMgmtBean.employeeFirstName}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled}"/>
                                 
                        <h:outputLabel value="Nachname: *"  for="lastName"/>
                        <h:inputText id="lastName" 
                                 value="#{EmployeeMgmtBean.employeeLastName}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled}"/>
                                 
                        <h:outputLabel value="Geburtstag: *"  for="birthday"/>
                        <h:inputText id="birthday" 
                                 value="#{EmployeeMgmtBean.employeeDateOfBirth}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled}"/>
                                 
                        <h:outputLabel value="Datev Nummer: "  for="datevNumber"/>
                        <h:inputText id="datevNumber" 
                                 value="#{EmployeeMgmtBean.employeeDatevNumber}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled}"/>
                                 
                        <h:outputLabel value="E-Mail Adresse: *"  for="email"/>
                        <h:inputText id="email" 
                                 value="#{EmployeeMgmtBean.employeeEmailAdress}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled}"/>
                                 
                        <h:outputLabel value="Eintrittsdatum: *"  for="entryDate"/>
                        <h:inputText id="entryDate" 
                                 value="#{EmployeeMgmtBean.employeeEntryDate}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled}"/>
                                 
                        <h:outputLabel value="Austrittsdatum: "  for="leavingDate"/>
                        <h:inputText id="leavingDate" 
                                 value="#{EmployeeMgmtBean.employeeLeavingDate}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled}"/>
                                 
                        <h:outputLabel value="Mitarbeiter Status: *" for="employeeStatusSelection" style="font-family: Verdana; font-size: x-small"/>
                        <h:selectOneMenu id="employeeStatusSelection" value="#{EmployeeMgmtBean.employeeStatusId}"
                                         disabled="#{EmployeeMgmtBean.isFieldDisabled}">
                            <f:selectItems value="#{EmployeeMgmtBean.employeeStatusList}"/>
                       </h:selectOneMenu>
                    </h:panelGrid>
                    <h:panelGrid columns="2"> <!-- CONTRACT -->
                            <h:dataTable id="tableContracts" value="#{EmployeeMmgtBean.employmentContractList}" 
                                         var="item" border="1" cellpadding="2" cellspacing="0" width="400" 
                                         style="font-family: verdana; font-size: x-small; text-align: center;">
                                <f:facet name="header">
                                        <h:outputText value="Verträge des Mitarbeiters" style="font-weight: bold"></h:outputText>
                                </f:facet>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="Typ" style="font-weight: bold"></h:outputText>
                                    </f:facet>
                                    <h:outputText value="#{item.contractTypeName}"></h:outputText>
                               </h:column>
                               <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="Std./Woche" style="font-weight: bold"></h:outputText>
                                    </f:facet>
                                    <h:outputText value="#{item.hoursPerWeek}"></h:outputText>
                               </h:column>
                               <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="Urlaub/Jahr" style="font-weight: bold"></h:outputText>
                                    </f:facet>
                                    <h:outputText value="#{item.vacationPerYear}"></h:outputText>
                               </h:column>
                               <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="mitn. ÜStd." style="font-weight: bold"></h:outputText>
                                    </f:facet>
                                    <h:outputText value="#{item.overtimeTakeover}"></h:outputText>
                               </h:column>
                               <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="von" style="font-weight: bold"></h:outputText>
                                    </f:facet>
                                    <h:outputText value="#{item.beginAsString}"></h:outputText>
                               </h:column>
                               <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="bis" style="font-weight: bold"></h:outputText>
                                    </f:facet>
                                    <h:outputText value="#{item.endAsString}"></h:outputText>
                               </h:column>
                            </h:dataTable>
                        <h:commandButton id="buttonNewContract" value="Neu" action="#{EmployeeMgmtBean.newContract}"
                                         disabled="#{EmployeeMgmtBean.isFieldDisabled}"
                                         immediate="true"/>
                        
                        <h:outputLabel value="Vertragstyp: *" for="contractTypeSelection" style="font-family: Verdana; font-size: x-small"/>
                        <h:selectOneMenu id="contractTypeSelection" value="#{EmployeeMgmtBean.contractTypeId}"
                                             disabled="#{EmployeeMgmtBean.isFieldDisabled || EmployeeMgmtBean.isContractFieldDisabled}">
                            <f:selectItems value="#{EmployeeMgmtBean.employmentContractTypeList}"/>
                        </h:selectOneMenu> 
                        
                        <h:outputLabel value="Arbeitsstunden/Woche: *"  for="vacation"/>
                        <h:inputText id="hoursWeek" 
                                 value="#{EmployeeMgmtBean.contractHoursPerWeek}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled || EmployeeMgmtBean.isContractFieldDisabled}"/>
                                 
                        <h:outputLabel value="Jahresurlaub in Tagen: *"  for="vacation"/>
                        <h:inputText id="vacation" 
                                 value="#{EmployeeMgmtBean.contractVacationPerYear}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled || EmployeeMgmtBean.isContractFieldDisabled}"/>
                        
                        <h:outputLabel value="Mitnahme der Überstunden: *"  for="overtime"/>
                        <h:selectBooleanCheckbox id="overtime" 
                                 value="#{EmployeeMgmtBean.contractOvertimeTakeover}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled || EmployeeMgmtBean.isContractFieldDisabled}"/>
                                 
                        <h:outputLabel value="Vertragsbeginn: *"  for="contractBegin"/>
                        <h:inputText id="contractBegin" 
                                 value="#{EmployeeMgmtBean.contractBegin}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled || EmployeeMgmtBean.isContractFieldDisabled}"/>
                                 
                        <h:outputLabel value="Vertragsende: "  for="contractEnd"/>
                        <h:inputText id="contractEnd" 
                                 value="#{EmployeeMgmtBean.contractEnd}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled || EmployeeMgmtBean.isContractFieldDisabled}"/>
                    </h:panelGrid>
                    <h:panelGrid columns="2"> <!-- USER-ACCOUNT -->
                        <h:outputLabel value="Anmeldename: *"  for="login"/>
                        <h:inputText id="login" 
                                 value="#{EmployeeMgmtBean.userAccountLoginName}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled}"/>
                                 
                        <h:outputLabel value="Passwort: *"  for="password"/>
                        <h:inputSecret id="password" 
                                 value="#{EmployeeMgmtBean.userAccountPassword}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled}"/>
                                 
                        <h:outputLabel value="Passwort wiederholen: *"  for="password2"/>
                        <h:inputSecret id="password2" 
                                 value="#{EmployeeMgmtBean.userAccountPassword2}" 
                                 disabled="#{EmployeeMgmtBean.isFieldDisabled}"/>
                                 
                        <h:outputLabel value="Rolle: *" for="roleSelection" style="font-family: Verdana; font-size: x-small"/>
                            <h:selectOneMenu id="roleSelection" value="#{EmployeeMgmtBean.roleId}"
                                             disabled="#{EmployeeMgmtBean.isFieldDisabled}">
                                <f:selectItems value="#{EmployeeMgmtBean.roleList}"/>
                            </h:selectOneMenu>  
                    </h:panelGrid>
                    <h:commandButton id="cancelButton" value="Abbrechen" action="#{EmployeeMgmtBean.cancelEdit}"
                                     disabled="#{EmployeeMgmtBean.isCancelButtonDisabled}"/>
                    <h:commandButton id="saveButton2" value="Speichern" action="#{EmployeeMgmtBean.saveEmployee}"
                                     disabled="#{EmployeeMgmtBean.isSaveButtonDisabled}"/>
               </h:panelGrid>
            </h:panelGrid>
            </h:panelGrid>
            </h:form>
       </f:view>
    </body>
</html>

Bean-Code
Code:
/* CONTRACT */
    public List<EmploymentContractWrapper> getEmploymentContractList() {
        Logger.info("getContractList: ");
        List<EmploymentContractWrapper> contractWrapperList = new ArrayList<EmploymentContractWrapper>();
        if (employee != null && !isEmployeeChanged) {
            for (EmploymentContract contract : employee.getEmploymentContractList()) {
                try {
                    contractWrapperList.add(new EmploymentContractWrapper(contract));
                } catch (ActivityException e) {
                    // Felher ausdrucken und weiter machen
                    Logger.warn(e.getMessage());
                }
            }
        }
        Logger.info("getContractList: " + contractWrapperList.size());
        return contractWrapperList;
    }

Vielen Dank für eure Hilfe.
 
S

SlaterB

Gast
vielleicht muss es ein Klassenattribut
employmentContractList
geben,

im getter kannst du ja LazyLoading bauen:

if (this.employmentContractList != null) {
return this.employmentContractList;
}
.. Attribut setzen
return this.employmentContractList;
 

Vale

Mitglied
Hi SlaterB,

danke, das war ein guter Tipp. Allerdings hat eine entsprechende Korrektur keinerlei Effekt gezeigt. :-( Weder Erfolg noch Fehlermeldung.

Welche Gründe kann es noch haben, dass ein Getter nicht aufgerufen wird?
 
S

SlaterB

Gast
ich weiß es nicht außer den üblichen (Bean nicht da, Tippfehler)

bist du dir denn sicher mit der Syntax für die Anzeige?
schon erfolgreich eine einfache Tabelle mit nur einer Spalte und einfachen Strings angezeigt?
am besten mit einem einfachen Bean A und Tabelle mit Namen b
 

Vale

Mitglied
In einer anderen JSF-Seite die ich zuvor gebaut habe, habe ich zwei viel größere Tabelle benutzt. Mit schicken Spielereien wie "Löschen" Buttons für jede Zeile. Das lief auf Anhieb.
Warum nun diese, eigentlich weniger anspruchsvolle Tabelle, nicht funktionieren will, ist mir gänzlich ein Rätsel. Ehrlich gesagt weiß ich schon gar nicht mehr weiter. Ich habe auch schon eine JSF-Seite gebaut ohne weiteren Inhalt, außer der Tabelle. Aber der Getter wird nie aufgerufen.

Mal schauen was sich noch ergibt...
 

Vale

Mitglied
Problem "gelöst".
Ich habe das Value-Attribut gelöscht und nochmals von eingegeben. Nun geht funktioniert alles reibungslos.
Evtl. ein Bug der IDE?

Danke für deine Mühe SlaterB. :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K jsf 1.2 tomahawk t:dataTable generic use Web Tier 3
W JSF DataTable - Filter Funktion funktioniert nicht Web Tier 3
W JSF einfache DataTable PrimeFaces Web Tier 1
F JSF h:dataTable fix Header und Scroll Body Web Tier 0
D JSF DataTable konvertiert Felder nicht Web Tier 1
K deleteButton in dataTable geht nur halb Web Tier 8
G JSP dataTable header - Datenwerte verwenden? Web Tier 3
T JSF Primefaces: DataTable Ajax Update - Weiterleitung von anderer Seite Web Tier 11
F Primefaces Datatable => Inplaces Web Tier 3
F Primefaces Datatable Web Tier 6
F.S.WhiTeY JSF h:dataTable / p:komponente Pagination mit Buchstaben. Web Tier 2
jottyfan JSF dataTable und graphicImage (mit JQuery) Web Tier 4
M JSF Composite components - dynamische dataTable? Web Tier 8
M JSF DataTable refreshen mit Ajax? Web Tier 5
M JSF Datatable, nichts geht ohne vorher zu refreshen... Web Tier 4
P JSF 1.2 commandButton in dataTable Web Tier 2
L JSF Überflüssige Methodenaufrufe - dataTable Web Tier 5
T DataTable Composite-Component und ManyToOne Web Tier 5
J JSF Datatable bestimmte Methode Web Tier 4
T JSF/Richfaces rich:dataTable with rich:datascroller Web Tier 1
A [PrimeFaces] dataTable mit paginator Probleme Web Tier 2
O Focus auf Textfeld, in letzter Reihe einer dataTable Web Tier 2
M Frage zur Konfiguration einer RichFaces DataTable Web Tier 4
M Datatable und der Zurückbutton Web Tier 4
K JSF Tomahawk dataScroller mit dataTable Web Tier 4
Y dataTable als dynamisches Grid Web Tier 4
E JSF Datatable erst nach Buttonklick anzeigen Web Tier 2
R JSF <rich:datatable> problem Web Tier 4
S JSF dataTable Position feststellen Web Tier 2
S JSF: colspan und rowspan in datatable Web Tier 4
E JSF Datatable leere Zellen anzeigen Web Tier 2
T richfaces datatable Web Tier 3
A JSF: Datatable Links mit Properties Web Tier 3
S richfaces Datatable horizontal ausgeben Web Tier 2
M JSF Getter / Setter parametrisieren Web Tier 4
F Property nicht gefunden (trotz getter und setter) Web Tier 3
L Set<T> Attribut eines Objektes wird zu null in thymeleaf Web Tier 2
C JSP data wird nicht angezeigt Web Tier 6
jann Servlet Bei jedem Request wird eine neue Session erstellt. Web Tier 6
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
W Tabelle wird nicht aktualisiert Web Tier 8
A JSF String wird nicht angezeigt Web Tier 2
S JSF CSS wird gefunden aber inhaltlich nicht angewendet Web Tier 2
R get-methode der Managed-Bean wird immer 3 mal ausgeführt Web Tier 4
R JSF ManagedProperty wird nicht erstellt Web Tier 1
G JSF Radio Button ValueChangeListener Wert wird nicht übernommen Web Tier 2
M fileUploadListener geht nicht wenn Element zur Laufzeit gerendert wird Web Tier 2
T JSF Primefaces beim öffnen eines p:dialog wird eine neue View ManagedBean erstellt Web Tier 2
nrg Java-Code in Taglib wird nicht richtig ausgeführt. Web Tier 7
F JSF CSS Verschachtelung wird nicht abgebildet Web Tier 2
F.S.WhiTeY Servlet Servlet wird nicht angesprochen Web Tier 3
D JSF a4j:support wird nicht gefunden Web Tier 2
H JSP, Eclipse, Tomcat - Java Klasse wird nicht gefunden Web Tier 8
T JSF wird nicht ausgeführt Web Tier 4
aze JSF CommandButton:Action wird nicht ausgeführt Web Tier 2
H JSF ActionListener wird ausgeführt, aber ändert den Wert nicht. Web Tier 7
L JSF Beispiel wird nicht ausgeführt Web Tier 2
T JSF Eigener Converter wird nur für Eingabekomponenten aufgerufen? Web Tier 3
M JSF Button - Methode wird nicht aufgerufen Web Tier 4
L einfache JSF-Seite wird nicht angezeigt Web Tier 8
B JSF HtmlCommandButton --- Action wird nicht aufgerufen Web Tier 2
N JSF [Maven] Seam 2.2, Richfaces 3.3 - a4j wird nicht umgewandelt Web Tier 6
P JSF AJAX render wird nicht ausgeführt Web Tier 4
X Seite wird mit AJAX neu geladen Web Tier 4
P Servlet wird nicht gefunden - HTTP Error 503 Web Tier 7
S JSF Primefaces Thema, Css wird geladen, nur die Bilder nicht, bzw Resource wird nicht aufgelöst Web Tier 5
borobudur Servlet Business-Logik wird bei jedem Request neu erstellt Web Tier 13
J JSF JSF2.0 template wird nicht gerendert!? Web Tier 2
C GWT: RPC wird nicht gefunden Web Tier 3
I Beim zurück-Link wird immer ein Request ausgeführt Web Tier 5
E JSP ist es noch aktuell oder wird heute was anderes genutzt? Web Tier 3
D [JSF] Lifecycle Methode wird mehrfach aufgerufen Web Tier 4
J JSF Custom Component ValueExpression wird nur als String erkannt Web Tier 2
E init() wird mehrmals aufgerufen Web Tier 4
L [RichFaces] Applikation wird mit NullPointerException beendet Web Tier 5
E CSS wird nach RequestDispatcher.redirect nicht mehr geladen Web Tier 7
megachucky JSF - JSTL Library wird nicht gefunden Web Tier 4
Z Servlet Response HTTP-Status 200 wird nicht übertragen Web Tier 3
K [gelöst] JSF-Seite wird nicht angezeigt Web Tier 3
H JSF Seite wird plain angezeigt Web Tier 3
N URL bei WebApp wird immer laenger Web Tier 5
G JSP/JSF Inputtext rerender wenn Value geändert wird Web Tier 2
I servlet: init wird auch nach ServletException aufgerufen Web Tier 3

Ähnliche Java Themen

Neue Themen


Oben