"Manchmal" IllegalArgumentException bei Zugriff auf HTMLDataTables.getRowData() ?!

thinkpad

Grünschnabel
Hallo Leute,

manchmal kriege ich bei einen Zugriff auf den aktuellen Datensatz einer HTMLDataTable eine Exception:
Code:
19:56:26,842 ERROR [STDERR] 19.04.2008 19:56:26 com.sun.facelets.FaceletViewHandler handleRenderException
SCHWERWIEGEND: Error Rendering View[/site/mysite.xhtml]
javax.faces.FacesException: javax.el.ELException: /site/mysite.xhtml @81,69 value="#{managedBean.selectedList}": Error reading 'selectedList' on type de.mbeans.managerBeans

Mich wundert nun, dass diese Exception wirklich nur manchmal auftritt. Vergisst die HTMLDataTable etwa bei welchem Datensatz sie ist? Der Fehler tritt genau bei Ausführung folgender Zeile auf:
Property pro = (Property) this.getPropertyDataTable().getRowData();

Weder die DataTable, noch DataTable().getRowData() sind null...

Mit einem try/catch Block räume ich dieses Problem zwar zur Seite, nur werde ich dann später wieder damit konfrontiert...

Vielen Dank im Voraus...
 
Habe das Problem nun erstmal temporär gelöst. Über getRowIndex() kriege ich manchmal -1 zurück, was theoretisch gesehen nicht möglich ist. Deswegen krachts. Nun hole ich mir über den getRowCount() (natürlich nur wenn >=0) das Objekt aus meiner Liste.
 
Nutzt du irgendeinen ORMapper um die dahinterliegenden Daten zu lesen? Ich vermute dass da vielleicht irgendein Lazyloading fehlschlägt?

Gruß
Ollie
 
Ja benutze ich, aber daran liegt es leider nicht. Habe nun das Problem herausgefunden aber keine passende Lösung:

Innerhalb meiner dataTable befindet sich eine SelectOneMenu Box welche SelectItems aus einem Getter (propertyList) holt. Nachdem nun der Getter aufgerufen wird, vergisst die HTMLDataTable anscheinend ihr Position (getRoxIndex() ist -1). Dann wird durch propertyList eine Liste von SelectItem Objekten ins Nirvana zurückgegeben und ich erhalte eine Fehlermeldung.

Hat jemand evtl. eine Idee wie man dieses Problem lösen könnte?
 
Aber das schreit doch förmlcih nach einem Zusammenhang. Fliegt eine LazyLoadingException ist das Model null und getRowIndex() tut genau das, was es soll. Kann es sein, dass du irgendwo Exceptions verschluckst? Ansonsten würde auf jeden Fall ein Stacktrace helfen ;).

Gruß
Ollie

PS: Vergiss nie The First Rule of Programming ;)
 
Hallo Oliver,

du hast ja Recht... wird wohl an mir liegen :)

Es handelt sich um folgende Exception: (fange keinerlei Exceptions auf...)
Code:
11:03:44,218 WARN  [lifecycle] executePhase(PROCESS_VALIDATIONS 3,com.sun.faces.context.FacesContextImpl@18b8076) threw exception
javax.faces.FacesException
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:108)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at de.filter.SecureRedirectFilter.doFilter(SecureRedirectFilter.java:35)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:127)
	at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:277)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.util.NoSuchElementException
	at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:117)
	at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:144)
	at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:49)
	at javax.faces.component.UISelectOne.matchValue(UISelectOne.java:164)
	at javax.faces.component.UISelectOne.validateValue(UISelectOne.java:137)
	at javax.faces.component.UIInput.validate(UIInput.java:867)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
	at javax.faces.component.UIInput.processValidators(UIInput.java:666)
	at javax.faces.component.UIData.iterate(UIData.java:1208)
	at javax.faces.component.UIData.processValidators(UIData.java:985)
	at javax.faces.component.UIForm.processValidators(UIForm.java:229)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662)
	at org.ajax4jsf.framework.ajax.AjaxViewRoot.access$201(AjaxViewRoot.java:53)
	at org.ajax4jsf.framework.ajax.AjaxViewRoot$3.invokeRoot(AjaxViewRoot.java:315)
	at org.ajax4jsf.framework.ajax.JsfOneOneInvoker.invokeOnRegionOrRoot(JsfOneOneInvoker.java:53)
	at org.ajax4jsf.framework.ajax.AjaxContext.invokeOnRegionOrRoot(AjaxContext.java:191)
	at org.ajax4jsf.framework.ajax.AjaxViewRoot.processValidators(AjaxViewRoot.java:329)
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
	... 32 more
11:03:44,234 ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
java.util.NoSuchElementException
	at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:117)
	at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:144)
	at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:49)
	at javax.faces.component.UISelectOne.matchValue(UISelectOne.java:164)
	at javax.faces.component.UISelectOne.validateValue(UISelectOne.java:137)
	at javax.faces.component.UIInput.validate(UIInput.java:867)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
	at javax.faces.component.UIInput.processValidators(UIInput.java:666)
	at javax.faces.component.UIData.iterate(UIData.java:1208)
	at javax.faces.component.UIData.processValidators(UIData.java:985)
	at javax.faces.component.UIForm.processValidators(UIForm.java:229)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662)
	at org.ajax4jsf.framework.ajax.AjaxViewRoot.access$201(AjaxViewRoot.java:53)
	at org.ajax4jsf.framework.ajax.AjaxViewRoot$3.invokeRoot(AjaxViewRoot.java:315)
	at org.ajax4jsf.framework.ajax.JsfOneOneInvoker.invokeOnRegionOrRoot(JsfOneOneInvoker.java:53)
	at org.ajax4jsf.framework.ajax.AjaxContext.invokeOnRegionOrRoot(AjaxContext.java:191)
	at org.ajax4jsf.framework.ajax.AjaxViewRoot.processValidators(AjaxViewRoot.java:329)
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at de.filter.SecureRedirectFilter.doFilter(SecureRedirectFilter.java:35)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:127)
	at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:277)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)

Ich frage mich jetzt eigentlich nur: Wann hat eine HTMLDataTable keine Position (getRowIndex() = -1) und wie kann man dies verhindern. In der Doku kann ich leider nichts dazu finden.

EDIT: Was wirklich merkwürdig ist: Der Fehler tritt im IE sehr oft auf. In Firefox nur manchmal...
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück