4 Replies Latest reply on Nov 12, 2011 7:17 AM by jadtn

    [RF 4.1.M4] rich:tabpanel strange java.lang.ArrayStoreException in richfaces

    jadtn

      Hi

      I have a rich:tabpanel (code below) where user can choose a type geographical search, when i click one time on tab it s ok, when the second time I click another tab (anything) , i have systematicaly this ArrayStoreException.

      I don't undertand it because i don'see if it s an error from my code or other.

       

      Thank for your help

      -Adrien

       

      10:43:00,785 GRAVE [org.richfaces.log.Context] (http-127.0.0.1-127.0.0.1-80-4) java.lang.String: java.lang.ArrayStoreException: java.lang.String

              at org.richfaces.renderkit.SelectManyHelper.getConvertedValue(SelectManyHelper.java:275) [richfaces-components-ui-4.1.0.20111101-M4.jar:]

              at org.richfaces.renderkit.SelectManyRendererBase.getConvertedValue(SelectManyRendererBase.java:108) [richfaces-components-ui-4.1.0.20111101-M4.jar:]

              at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at javax.faces.component.UIInput.validate(UIInput.java:960) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at javax.faces.component.UIInput.executeValidate(UIInput.java:1233) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at javax.faces.component.UIInput.processValidators(UIInput.java:698) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at org.richfaces.component.AbstractTogglePanel.processValidators(AbstractTogglePanel.java:260) [richfaces-components-ui-4.1.0.20111101-M4.jar:]

              at org.richfaces.context.PartialViewExecuteVisitCallback.visit(PartialViewExecuteVisitCallback.java:55) [richfaces-core-impl-4.1.0.20111101-M4.jar:]

              at org.richfaces.context.BaseExtendedVisitContext.invokeVisitCallback(BaseExtendedVisitContext.java:321) [richfaces-core-impl-4.1.0.20111101-M4.jar:]

              at org.richfaces.component.AbstractTogglePanel.visitTree(AbstractTogglePanel.java:693) [richfaces-components-ui-4.1.0.20111101-M4.jar:]

              at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at javax.faces.component.UIForm.visitTree(UIForm.java:344) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at javax.faces.component.UINamingContainer.visitTree(UINamingContainer.java:163) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at org.richfaces.context.ExtendedPartialViewContextImpl.executeComponents(ExtendedPartialViewContextImpl.java:237) [richfaces-core-impl-4.1.0.20111101-M4.jar:]

              at org.richfaces.context.ExtendedPartialViewContextImpl.processPartialExecutePhase(ExtendedPartialViewContextImpl.java:217) [richfaces-core-impl-4.1.0.20111101-M4.j

              at org.richfaces.context.ExtendedPartialViewContextImpl.processPartial(ExtendedPartialViewContextImpl.java:196) [richfaces-core-impl-4.1.0.20111101-M4.jar:]

              at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1170) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]

              at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]

              at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.3-b02-jbossorg-2.jar:2.1.3-SNAPSHOT]

              at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]

              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67) [weld-core-1.1.2.Final.jar:2011-07-26 15:02]

              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:139) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]

              at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:480) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]

              at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:49) [jboss-as-jpa-7.0.2.Final.jar:7.0.2.Final]

              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:567) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952) [jbossweb-7.0.1.Final.jar:7.0.2.Final]

              at java.lang.Thread.run(Thread.java:662) [:1.6.0_26]

       

       

       

      {code:xml}

       

      <rich:tabPanel switchType="ajax"  id="mg"  selectedPanel="#{ctrlFullSearch.form.geoSearchType}" itemChangeListener="#{ctrlFullSearch.form.geoItemChangeListener}" >

                    

                                <rich:tab label="Code postal" id="scp" action="#{ctrlFullSearch.form.onSearchCP}" switchType="ajax"  limitRender="true"   execute="@region" render="info,info1,info2" >

                                                                       

                                            <fieldset>

                                       <legend>Code postal</legend> 

                                            <h:outputLabel for="cp" value="#{bus.s_cp}" />

                                                        <h:panelGroup>

                                                                  <h:inputText id="cp" value="#{ctrlFullSearch.form.cp.value}" size="6" maxlength="10" converterMessage="#{ErrMsg.e_cp}" disabled="#{ctrlFullSearch.form.countryWithOneTown}"/>

                                                                  <a4j:outputPanel  >

                                                                                      <h:message id="gcpko" for="svfs:fsf:cp" styleClass="error" />

                                                                                      <h:outputText id="nos" rendered="#{ctrlFullSearch.form.countryWithOneTown}" style="color:orange" value="#{bus.s_emptyselect}"/>

                                                                            </a4j:outputPanel>

                                                        </h:panelGroup>

                                                        </fieldset>  

                                  </rich:tab>

                                 

                                  <rich:tab label="D&#233;partements" id="sdpt" action="#{ctrlFullSearch.form.onSearchDpts}" switchType="ajax"  limitRender="true"  execute="@this" render="info,info1,info2" >

                                               

                                  <fieldset>

                                       <legend>D&#233;partements</legend>

                                       <a4j:outputPanel  >

                                                                  <h:outputText   rendered="#{ctrlFullSearch.form.departementSelectSearchEmpty}" style="color:orange" value="#{bus.s_emptyselect}"/>

                                                        </a4j:outputPanel>

                                                        <rich:pickList style="width:80%"   showButtonsLabel="false"   value="#{ctrlFullSearch.form.departements.values}" id="dpts"  >

                        <f:selectItems value="#{ctrlFullSearch.form.departementSelectSearch}"  />

              

                        </rich:pickList>  

                                              </fieldset>      

                                  </rich:tab>

       

       

                                  <rich:tab label="R&#233;gions" id="sreg" action="#{ctrlFullSearch.form.onSearchRegion}" switchType="ajax"  limitRender="true" execute="@this"  render="info,info1,info2">

                                

                            <fieldset  > <legend>R&#233;gions</legend>  

                            <a4j:outputPanel >

                                                                  <h:outputText   rendered="#{ctrlFullSearch.form.regionSelectSearchEmpty}" style="color:orange" value="#{bus.s_emptyselect}"/>

                                                        </a4j:outputPanel>                

                       <rich:pickList   showButtonsLabel="false"  value="#{ctrlFullSearch.form.regions.values}" id="reg"  >

                        <f:selectItems  value="#{ctrlFullSearch.form.regionSelectSearch}" />

                        </rich:pickList>

                            </fieldset>

                          

                                  </rich:tab>

                                  <rich:tab label="Distance d'une ville" id="sdist" action="#{ctrlFullSearch.form.onSearchDist}" switchType="ajax"  limitRender="true" execute="@this" render="info,info1,info2">

                                            

                                            <fieldset>

                                       <legend>Distance d'une ville</legend> 

                                                                    <h:outputLabel for="cpd" value="#{bus.s_geo_cp}" />

                                                                  <h:panelGroup >

                                                                                      <a4j:region>

                                                                                      <h:inputText id="cpd"  value="#{ctrlFullSearch.form.geo.form.codePostal}" size="6" maxlength="10"  converterMessage="#{ErrMsg.e_cp}" required="#{ctrlFullSearch.form.geoDistSearch}" disabled="#{ctrlFullSearch.form.countryWithOneTown}">

                                                                                                <rich:tooltip id="tcp">

                                                                                                          <span style="white-space: wrap"> Entrez un <strong>code postal</strong>.<br />

                                                                                                          Puis cliquez sur le <strong>bouton "chercher"</strong> pour choisir votre ville. </span>

                                                                                                </rich:tooltip>

                                                                                      </h:inputText>

                                                                                      <a4j:commandButton id="b_ajax_load_towns"  style="margin:0 5px" action="#{ctrlFullSearch.form.geo.loadTownsForCodePostal}" value="chercher" render="cpko,towns" disabled="#{ctrlFullSearch.form.countryWithOneTown}"/>

                                                                                      </a4j:region>

                                                                            <a4j:outputPanel >

                                                                                      <h:message id="cpko" for="svfs:fsf:cpd" styleClass="error" />

                                                                                      <h:outputText id="nos2" rendered="#{ctrlFullSearch.form.countryWithOneTown}" style="color:orange" value="#{bus.s_emptyselect}"/>

                                                                            </a4j:outputPanel>

                                                                            

                                                                  </h:panelGroup>

       

                                                                  <div class="clearer"><!-- --></div>

                                                                  <h:outputLabel for="towns" value="#{bus.s_geo_town}" />

                                                                  <a4j:outputPanel >

                                                                            <h:selectOneMenu id="towns" value="#{ctrlFullSearch.form.geo.town}" required="#{ctrlFullSearch.form.geoDistSearch}">

                                                                                      <f:selectItems value="#{ctrlFullSearch.form.geo.townSelect}" />

                                                                            </h:selectOneMenu>

                                                                            <h:message id="tko" for="svfs:fsf:towns" styleClass="error" />

                                                                  </a4j:outputPanel>

                                                                  <div class="clearer"><!-- --></div>

                                                                  <h:outputLabel  value="#{bus.s_dist}" />

                                                                  <h:panelGroup>

                                                                            <rich:inputNumberSlider id="dist" value="#{ctrlFullSearch.form.geo.form.dist}" width="200" maxValue="100"    step="1"/>

                                                                  </h:panelGroup>

                                                        </fieldset>

                                  </rich:tab>

                                 

                                  </rich:tabPanel>

      {code}

        • 1. Re: [RF 4.1.M4] rich:tabpanel strange java.lang.ArrayStoreException in richfaces
          bleathem

          Looking at the stack trace:

           

          java.lang.ArrayStoreException: java.lang.String

                  at org.richfaces.renderkit.SelectManyHelper.getConvertedValue(SelectManyHelper.java:275)

                  at org.richfaces.renderkit.SelectManyRendererBase.getConvertedValue(SelectManyRendererBase.java:108)

                  at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030)

                  at javax.faces.component.UIInput.validate(UIInput.java:960)

                  at javax.faces.component.UIInput.executeValidate(UIInput.java:1233)

                  at javax.faces.component.UIInput.processValidators(UIInput.java:698)

                  at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)

                  at org.richfaces.component.AbstractTogglePanel.processValidators(AbstractTogglePanel.java:260)

           

          I can see that a call to AbstractTogglePanel.processValidators is endis up in the SelectManyRenderBase (the renderer base used for pickLlist and orderingList).  This is most likely a bug.

           

          Would you please file a jira issue? and we'll see about gettting this resolved.

          1 of 1 people found this helpful
          • 2. Re: [RF 4.1.M4] rich:tabpanel strange java.lang.ArrayStoreException in richfaces
            jadtn
            • 3. Re: [RF 4.1.M4] rich:tabpanel strange java.lang.ArrayStoreException in richfaces
              bleathem

              Having taken a closer look at the stack strace in the attached forum thread, I think I mis-interpreted the stack strace.  The problem most like comes up because the pickList is missing a Converter.

               

               

              Have atry nesting a converter in your pickList component.

              • 4. Re: [RF 4.1.M4] rich:tabpanel strange java.lang.ArrayStoreException in richfaces
                jadtn

                In fact this is picklist wich no more supports array []  in RF 4 for set/get selected values in picklist

                 

                String [] getSetDepartementSelectSearch()-->works in RF3.3 not in RF4.1

                List<String> getSetDepartementSelectSearch()-->work both

                 

                <rich:pickList   value="#{ctrlFullSearch.form.departements.values}" id="dpts"  >
                    <f:selectItems value="#{ctrlFullSearch.form.departementSelectSearch}"  />

                </rich:pickList>