tree and contextMenu exception
alespio Jun 5, 2008 8:31 AMHi
in my app i have a tree with contextMenu for each child.
If I try to add a node at runtime clicking on a button, and then rerender that tree, I've got an exception:
2008-06-05 14:17:58,528 [http-8086-1] ERROR org.ajax4jsf.webapp.BaseXMLFilter - Exception in the filter chain javax.servlet.ServletException: srcBegin > srcEnd at javax.faces.webapp.FacesServlet.service(FacesServlet.java:277) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) 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:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.StringIndexOutOfBoundsException: srcBegin > srcEnd at java.lang.AbstractStringBuilder.getChars(AbstractStringBuilder.java:327) at java.lang.StringBuilder.getChars(StringBuilder.java:55)
that is my code:
<a4j:outputPanel id="pnl_tree"> <rich:tree id="id_tree" reRender="pnl_container" nodeSelectListener="#{treeModelBean.processRichiesta}" switchType="client" ajaxSubmitSelection="true" > <rich:treeNodesAdaptor id="request" nodes="#{treeModelBean.requests}" var="req"> <rich:treeNode iconLeaf="/resources/img/icons/16/Medical-invoice-information-16x16.png" icon="/resources/img/icons/16/health-care-shield-16x16.png" oncontextmenu="return false;" > <h:outputLabel value="Richiesta: #{req.id} - #{req.data}" /> </rich:treeNode> <rich:treeNodesAdaptor id="impegn" var="imp" nodes="#{req.impegnList}"> <rich:treeNode iconLeaf="/resources/img/icons/16/Medical-invoice-information-16x16.png" icon="/resources/img/icons/16/Medical-invoice-information-16x16.png" oncontextmenu="return false;"> <h:outputLabel id="impm" value="Impegnativa: #{imp.id} - #{imp.descr}" /> <rich:contextMenu event="oncontextmenu" attachTo="impm" > <rich:menuItem ajaxSingle="true" value="Aggiungi Esame" action="#{treeModelBean.addExam}" id="addEx"> <a4j:actionparam value="{imp}" assignTo="#{treeModelBean.selectedImp}" /> </rich:menuItem> <rich:menuItem ajaxSingle="true" value="Modifica Impegnativa" action="#{treeModelBean.editImp}" id="editImp"> <a4j:actionparam value="{imp}" assignTo="#{treeModelBean.selectedImp}" /> </rich:menuItem> <rich:menuItem ajaxSingle="true" value="Elimina Impegnativa" action="#{treeModelBean.delImp}" id="delImp"> <a4j:actionparam value="{imp}" assignTo="#{treeModelBean.selectedImp}" /> </rich:menuItem> </rich:contextMenu> </rich:treeNode> <rich:treeNodesAdaptor id="exam" var="ex" nodes="#{imp.examList}"> <rich:treeNode iconLeaf="/resources/img/icons/16/blood-16x16.png" icon="/resources/img/icons/16/blood-16x16.png" oncontextmenu="return false;"> <h:outputLabel id="exm" value="Esame: #{ex.id} - #{ex.cod}" /> <rich:contextMenu event="oncontextmenu" attachTo="exm" > <rich:menuItem value="Modifica Esame" action="#{treeModelBean.editExam}" id="editEx"> <a4j:actionparam value="{imp}" assignTo="#{treeModelBean.selectedImp}" /> <a4j:actionparam value="{ex}" assignTo="#{treeModelBean.selectedExam}" /> </rich:menuItem> <rich:menuItem value="Elimina Esame" action="#{treeModelBean.delExam}" id="delEx"> <a4j:actionparam value="{imp}" assignTo="#{treeModelBean.selectedImp}" /> <a4j:actionparam value="{ex}" assignTo="#{treeModelBean.selectedExam}" /> </rich:menuItem> </rich:contextMenu> </rich:treeNode> </rich:treeNodesAdaptor> </rich:treeNodesAdaptor> </rich:treeNodesAdaptor> <a4j:support event="onselected" action="#{treeModelBean.doSomething}" reRender="pnl_req,pnl_ex,pnl_imp" /> </rich:tree> </a4j:outputPanel> <a4j:commandButton styleClass="bottone_lungo" oncomplete="Richfaces.showModalPanel('newRequestPanel');" action="#{treeModelBean.prepareNewRequest}" id="btnNewReq" value="Nuova Richiesta" reRender="pnl_tree" />
If I remove contextMenu the app add a node and show it correctly.
I'm using RF3.2.1 GA
Thanks to all