Weird NullPointerException in org.ajax4jsf.org.w3c.tidy.Node
ylazzari Jul 30, 2007 6:05 PMHi,
I have a weird NullPointerException that occurs inside a a4j:repeat. Here's my template snippet:
<table border="1"> <thead> <tr> <th>col1</th> </tr> </thead> <tbody> <a4j:repeat value="#{someList}" var="item"> <h:panelGroup id="theRow"> <tr> <td><h:outputText value="#{item.someValue1}"/></td> </tr> <tr> <td><h:outputText value="#{item.someValue2}"/></td> </tr> </h:panelGroup> </a4j:repeat> </tbody> </table>
I have a simple a4j:repeat that I use to build an HTML table. I get the following exception when I try to render this template:
java.lang.NullPointerException at org.ajax4jsf.org.w3c.tidy.Node.trimInitialSpace(Node.java:967) at org.ajax4jsf.org.w3c.tidy.Node.trimSpaces(Node.java:1033) at org.ajax4jsf.org.w3c.tidy.ParserImpl$ParseInline.parse(ParserImpl.java:1146) at org.ajax4jsf.org.w3c.tidy.ParserImpl.parseTag(ParserImpl.java:224) at org.ajax4jsf.org.w3c.tidy.ParserImpl$ParseRowGroup.parse(ParserImpl.java:2830) at org.ajax4jsf.org.w3c.tidy.ParserImpl.parseTag(ParserImpl.java:224) at org.ajax4jsf.org.w3c.tidy.ParserImpl$ParseTableTag.parse(ParserImpl.java:2650) at org.ajax4jsf.org.w3c.tidy.ParserImpl.parseTag(ParserImpl.java:224) at org.ajax4jsf.org.w3c.tidy.ParserImpl$ParseBlock.parse(ParserImpl.java:2488) at org.ajax4jsf.org.w3c.tidy.ParserImpl.parseTag(ParserImpl.java:224) at org.ajax4jsf.org.w3c.tidy.ParserImpl$ParseBlock.parse(ParserImpl.java:2488) at org.ajax4jsf.org.w3c.tidy.ParserImpl.parseTag(ParserImpl.java:224) at org.ajax4jsf.org.w3c.tidy.ParserImpl$ParseBody.parse(ParserImpl.java:999) at org.ajax4jsf.org.w3c.tidy.ParserImpl.parseTag(ParserImpl.java:224) at org.ajax4jsf.org.w3c.tidy.ParserImpl$ParseHTML.parse(ParserImpl.java:507) at org.ajax4jsf.org.w3c.tidy.ParserImpl.parseDocument(ParserImpl.java:3430) at org.ajax4jsf.org.w3c.tidy.Tidy.parse(Tidy.java:384) at org.ajax4jsf.org.w3c.tidy.Tidy.parse(Tidy.java:282) at org.ajax4jsf.org.w3c.tidy.Tidy.parseDOM(Tidy.java:625) at org.ajax4jsf.framework.ajax.xmlfilter.tidy.TidyParser.parseHtmlByTidy(TidyParser.java:98) at org.ajax4jsf.framework.ajax.xmlfilter.tidy.TidyParser.parseHtml(TidyParser.java:203) at org.ajax4jsf.framework.ajax.xmlfilter.FilterServletResponseWrapper.parseContent(FilterServletResponseWrapper.java:613) at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:284) at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:276) at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:40) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:63) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:140) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:217) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:258) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:189) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:611) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:564) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:81) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:193) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:611) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:564) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:558) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1067) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:611) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:564) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:558) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1067) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:255) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:618) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:549) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:790) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:326) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:248) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:199) at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252) at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:93)
If I simply remove the "id" attribute on the h:panelGroup embedded inside the a4j:repeat, it works. The thing is, I need the "id" attribute because I want to partially re-render certain rows of my table so I will have commands whose "reRender" attribute will be equal to that "id". I'm using the latest snapshot of Ajax4jsf (1.1.12-20070730) but I have the same behaviour with older snapshots as well.
Thanks for your help.