JSF + Facelets: Datatable wird nicht angezeigt

Status
Nicht offen für weitere Antworten.

nightpoet

Mitglied
Hallo zusammen

Ich schlage mich seit einigen Tagen mit einem mysteriösen Datatable Problem herum.

Aus einer Managed Bean "GamesMB" soll eine ArrayList "gamesNotToRegisterFor" ausgelesen und deren Elemente in einer Datatable angezeigt werden. Beim Laden der Seite wird auch die entsprechende get - Methode der Bean aufgerufen. Wenn die Bean eine leere ArrayList zurückliefert, wird eine leere Tabelle angezeigt. Andernfalls wird sie überhaupt nicht gerendert. Lediglich das umgebende Formular ist im erzeugten HTML-Code sichtbar. Merkwürdigerweise wird der Rest der Seite fehlerfrei dargestellt und auch im Server-Log sind keine Hinweise auf die Ursache des Fehlers zu finden.

Zur Verdeutlichung hier einige Codeausschnitte:

Hier ein Auschnitt der Managed Bean

Code:
    private ArrayList<GameMB> gamesNotToRegisterFor;
    private ArrayList<GameMB> gamesToRegisterFor;
	
    private HtmlDataTable gamesDataTable;
    private GameMB gameItem;
	
    [...]
	
    public ArrayList<GameMB> getGamesToRegisterFor() {
        if (logger.isDebugEnabled())
            logger.debug("entered List<GameMB> getGamesToRegisterFor()");
        if (gamesToRegisterFor == null || gamesToRegisterFor.size() == 0)
            logger.debug("Games Vector retrieved form session-bean is null or empty.");
		
        return gamesToRegisterFor;
    }

Registrierung der Beans GameMB und GamesMB in der faces-config.xml

Code:
<managed-bean>
  <managed-bean-name>gameBean</managed-bean-name>
  <managed-bean-class>control.managedBeans.GameMB</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>gamesBean</managed-bean-name>
  <managed-bean-class>control.managedBeans.GamesMB</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>

Ausschnitt aus der aufrufenden xhtml Seite

Code:
<h:panelGroup styleClass="messagecontainer" rendered="#{!empty gamesBean.gamesToRegisterFor}">	
				<h:outputText value="#{res['welcome.gamesToRegisterFor']}" styleClass="statusmessageheader"/>
				
	
				<h:outputText value="#{res['welcome.newGameNamesList']}" styleClass="statusmessageelement"/>
			</h:panelGroup>			
						
			<h:form id="selectGameToRegisterForm" styleClass="formcontainer" rendered="#{!empty gamesBean.gamesToRegisterFor}">
				<h:dataTable id="selectGameToRegisterTable" value="#{gamesBean.gamesToRegisterFor}" 
						var="gameItem" binding="#{gamesBean.gamesDataTable}" 
						border="0" cellpadding="0" cellspacing="0" rowClasses="tableelement1, tableelement2">
					      		
					<h:column>
					      <f:facet name="header">
					      	<h:outputText value="#{res['base.game']}" styleClass="tableheader"/>
					    </f:facet>     		
					    <h:commandLink action="#{gamesBean.executeGameSelection}" value="#{gameItem.name}" styleClass="tablelink"/>
					</h:column>
					      		
					<h:column>
					    <f:facet name="header">
					      	<h:outputText value="#{res['welcome.game.description']}" styleClass="tableheader"/>
					    </f:facet> 
					    <h:outputText value="#{gameItem.descriptionShort}" />
					</h:column>
					      		
					<h:column>
					   	<f:facet name="header">
					      	<h:outputText value="#{res['game.base.turn']}" styleClass="tableheader"/>
					    </f:facet> 
					    <h:outputText value="#{gameItem.round}" />
					</h:column>
					      		
					<h:column>
					    <f:facet name="header">
					      	<h:outputText value="#{res['welcome.game.closingDateOfRound']}" styleClass="tableheader"/>
					    </f:facet> 
					    <h:outputText value="#{gameItem.ending}" />
					</h:column>
					      		
					<h:column>
					    <f:facet name="header">
					      	<h:outputText value="#{res['welcome.game.mainLink']}" styleClass="tableheader"/>
					    </f:facet> 
					    <h:outputLink value="#{gameItem.mainLink}">
					      	<h:outputText value="#{gameItem.mainLink}" styleClass="tablelink"/>
					    </h:outputLink>			      		
					</h:column>
					      		
				</h:dataTable> 
			</h:form>

Die renderer-Attribute für die Datatable und die panelgroup mit den Hinweistexten habe ich nachtäglich eingefügt, damit beide nur angezeigt werden, wenn die ArrayList Daten enthält.
Wenn ich die Seite aufrufe ist der Hinweistext jedoch niemals sichtbar - auch dann wenn keine leere Liste zurückgeliefert wird. Der Ausdruck #{!empty gamesBean.gamesToRegisterFor} wird anscheinend überhaupt nicht oder stets zu false evaluiert, obwohl auch hier die get - Methode der Bean korrekt aufgerufen wird.

Hat jemand eine Idee, was hier falsch laufen könnte?

Thanx
 

nightpoet

Mitglied
Nachdem ich einen Fehler in der GamesMB Implementierung behoben habe, wird der "rendered" - Ausdruck in der panelgroup korrekt ausgewertet und der Text bei einer nicht leeren Liste angezeigt.

Ausserdem habe ich die Bean mit einem einfachen Testproperty getestet, was problemlos angezeigt wird. Der Fehler hängt daher wohl alleinig mit der Arrayliste und der Datatable zusammen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Probleme mit Apache MyFaces 2 und ICEFaces Facelets Allgemeines EE 1
B Facelets + EJB3 Allgemeines EE 3
G Facelets Templating Allgemeines EE 4
T Probleme mit Facelets und if foreach und when Allgemeines EE 3
F Umlaute und Facelets Allgemeines EE 4
F Konvertierung JSF -> facelets (templating) Allgemeines EE 1
S facelets - umlaute darstellen Allgemeines EE 4
W Spring mit JSF und Facelets? Allgemeines EE 1
fiesematente JSF ajax innerhalb DataTable und verschachtelte EL (Brauch dringend hilfe) Allgemeines EE 8
B eine vom Admin hochgeladene csv -Datei in der Datatable auch von jedem User sichtbar Allgemeines EE 0
G Primefaces Zeile in DataTable auswählen Allgemeines EE 1
G JSF Datenstruktur für DataTable Allgemeines EE 2
S Primefaces DataTable und Vererbung Allgemeines EE 1
Raidri [SEAM] rich:dataTable sortBy Problem Allgemeines EE 6
W PrimeFaces datatable zentrieren Allgemeines EE 15
J JSF2.0 / Doppelklick DataTable / Richfaces Allgemeines EE 4
P <h:dataTable> doppelte ausgabe Allgemeines EE 8
D Liste für dataTable (JSF) manuell füllen Allgemeines EE 2
M h:datatable und Info auf leere Liste Allgemeines EE 2
M JSF datatable ineinander schachteln Allgemeines EE 6
N JSF - Frage zu Managed Beans und DataTable Allgemeines EE 4
J JSF: dataTable nebeneinander anordnen Allgemeines EE 5
F DataTable mit Checkboxen Allgemeines EE 2
K probleme mit <h:dataTable> Allgemeines EE 2
O Anzeigen mehrerer columns in einer DataTable Allgemeines EE 4
K Datatable Löschen Fehler Allgemeines EE 6
S JSF datatable mit buttons Werte übergeben Allgemeines EE 5
smitty Farbe der Tabellenzellen in "<t:dataTable>" Allgemeines EE 5
F Index im Datatable Allgemeines EE 4
P JSF Datatable und löschen Allgemeines EE 2
C Seltsames Verhalten von JSF DataTable Allgemeines EE 2
M doGet()-Methode wird nicht geladen Allgemeines EE 3
B Datenbank Resource wird nicht gefunden Allgemeines EE 1
OnDemand JSF Stacktrace wird nicht korrekt ausgegeben Allgemeines EE 1
J Mit @Schedule annotierte Methode wird nach einer Weile nicht mehr ausgeführt (JBoss AS 7.2) Allgemeines EE 0
S Drools - Stop sobald erste Regel getroffen wird Allgemeines EE 2
S a4j:ajax Event wird 2 Mal gefeuert. Allgemeines EE 0
J JBoss, Eclipse, Webseite wird nicht angezeigt? Allgemeines EE 4
Y JSF EJB wird nicht injected Allgemeines EE 18
A Wie kann ich verhinder, dass die seite angezeigt wird? Allgemeines EE 3
P Prozess wird nicht beendet Allgemeines EE 4
C JSP wird nur halb geladen Allgemeines EE 2
G jsp:getProperty wird mehrfach aufgerufen - Warum? Allgemeines EE 3
A action-Methode wird nicht aufgerufen Allgemeines EE 7
M taglib wird nicht gefunden Allgemeines EE 9
G EJB - EJB wird nicht ins Servlet geladen Allgemeines EE 3
F doFilter wird zwei mal aufgerufen Allgemeines EE 5
M Action wird 2 mal durchlaufen Allgemeines EE 3
P JSF Seite wird nicht gestartet Allgemeines EE 4
B FileInputStream(sPath); file wird nicht gefunden Allgemeines EE 5
F MyFaces und Tiles: <tiles:insert> wird nicht erkannt Allgemeines EE 10
A HttpUnit: Form wird nicht submitted Allgemeines EE 4
G welcher Appserver wird verwendet Allgemeines EE 4
S package wird nicht gefunden Allgemeines EE 2
H Servlet: init() wird 2x ausgeführt Allgemeines EE 8
E Tomcat/Servlet Problem - Servlet wird nicht gefunden Allgemeines EE 8
G properties file im J2EE Server - wo wird genau gesucht? Allgemeines EE 6
F Servlet: DoPost wird zweimal aufgerufen Allgemeines EE 3
M Servlet: CSS der JSP wird bei einem forward nicht gefunden? Allgemeines EE 2
S ResSet wird "vernichtet" Allgemeines EE 5
D HTML-Code von JSP wird in Browser nicht angezeigt?! Allgemeines EE 3

Ähnliche Java Themen

Neue Themen


Oben