Uploaded image for project: 'MyFaces Trinidad'
  1. MyFaces Trinidad
  2. TRINIDAD-1523

Issue with <tr:selectOneChoice> - Implementing dependent select boxes

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 1.2.11-core
    • None
    • Components
    • None
    • Windows

    Description

      I am trying to implement dependent select boxes using trinidad. I have 2 drop down box, say A and B. I have set the autoSubmit="true" in dropdown A and specified partialTriggers with dropdwon B. When i change the A drop down B changes, as expected. But when i change any value in B dropdown and again change A. I get the below error.

      java.lang.IndexOutOfBoundsException: SelectOne submittedValue''s index 1 is out of bounds. It should be between 0 and 0
      at org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.SimpleSelectOneRenderer.__getIndex(SimpleSelectOneRenderer.java:423)
      at org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.SimpleSelectOneRenderer._convertIndexedSubmittedValue(SimpleSelectOneRenderer.java:214)
      at org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.SimpleSelectOneRenderer.getConvertedValue(SimpleSelectOneRenderer.java:181)
      at org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.InputLabelAndMessageRenderer.getConvertedValue(InputLabelAndMessageRenderer.java:65)
      at org.apache.myfaces.trinidad.component.UIXEditableValue.getConvertedValue(UIXEditableValue.java:422)
      at org.apache.myfaces.trinidad.component.UIXEditableValue.validate(UIXEditableValue.java:164)
      at org.apache.myfaces.trinidad.component.UIXEditableValue._executeValidate(UIXEditableValue.java:488)
      at org.apache.myfaces.trinidad.component.UIXEditableValue.processValidators(UIXEditableValue.java:270)
      at javax.faces.component.UIForm.processValidators(UIForm.java:74)
      at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:709)
      at javax.faces.component.UIViewRoot.access$101(UIViewRoot.java:43)
      at javax.faces.component.UIViewRoot$2.process(UIViewRoot.java:97)
      at javax.faces.component.UIViewRoot.process(UIViewRoot.java:206)
      at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:93)
      at org.apache.myfaces.lifecycle.ProcessValidationsExecutor.execute(ProcessValidationsExecutor.java:32)
      at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
      at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:148)
      at arch.jsf.JsfResource.process(JsfResource.java:145)
      at arch.presentation.beans.WebApplication._doServletFilterForRequest(WebApplication.java:564)
      at arch.presentation.beans.WebApplication.processResource(WebApplication.java:1368)
      at arch.presentation.beans.WebApplication.processRequest(WebApplication.java:2531)
      at arch.service.beans.ServiceContainer.processRequest(ServiceContainer.java:3913)
      at arch.no.engine.Context.processRequest(Context.java:68)
      at arch.no.engine.HttpConnector.processRequest(HttpConnector.java:58)
      at arch.no.http.Response.prepare(Response.java:563)
      at arch.no.http.Response._execute(Response.java:1975)
      at arch.no.http.Response.execute(Response.java:1910)
      at arch.no.http.HttpThreadPool._run(HttpThreadPool.java:32)
      at arch.util.ThreadPool._runLoopBody(ThreadPool.java:215)
      at arch.util.ThreadPool._runForThread(ThreadPool.java:232)
      at arch.util.ThreadPool.access$000(ThreadPool.java:5)
      at arch.util.ThreadPool$1.run(ThreadPool.java:97)

      Please find my XHTML content
      ------------------------------------------
      <f:view>
      <h:form id="dropDownForm">
      <tr:selectOneChoice valueChangeListener="#

      {dropdownbean.processAccountFeatureChange}

      " binding="#

      {dropdownbean.selectAccountFeature}

      " autoSubmit="true" value="#

      {dropdownbean.accountFeature}

      " id="selectAccountFeature" size="1">
      <f:selectItems value="#

      {dropdownbean.accountFeatureMap}

      " />
      </tr:selectOneChoice>
      <tr:selectOneChoice binding="#

      {dropdownbean.selectCardOrCheckType}

      " partialTriggers="selectAccountFeature" value="#

      {dropdownbean.cardOrCheckType}

      " id="selectCardOrCheckType" size="1">
      <f:selectItems value="#

      {dropdownbean.checkTypeMap}

      " />
      </tr:selectOneChoice>
      </h:form>
      </f:view>

      Please find my Bean code
      ------------------------------------
      public class DropDownBean {

      CoreSelectOneChoice selectAccountFeature;

      CoreSelectOneChoice selectCardOrCheckType;

      String accountFeature="1";

      String cardOrCheckType="SCO";

      Map accountFeatureMap;

      Map checkTypeMap;

      public DropDownBean()

      { super(); AMAConfig amaConfig = new AMAConfig(); accountFeatureMap = amaConfig.getAcctFeatureMap(); checkTypeMap = amaConfig.getSilverLevelCheckTypeMap(); }

      public void setSelectAccountFeature(CoreSelectOneChoice selectAccountFeature)

      { this.selectAccountFeature = selectAccountFeature; }

      public CoreSelectOneChoice getSelectAccountFeature()

      { return this.selectAccountFeature; }

      public void setSelectCardOrCheckType(CoreSelectOneChoice selectCardOrCheckType)

      { this.selectCardOrCheckType = selectCardOrCheckType; }

      public CoreSelectOneChoice getSelectCardOrCheckType()

      { return this.selectCardOrCheckType; }

      public String getAccountFeature()

      { return this.accountFeature; }

      public void setAccountFeature(String accountFeature){
      this.accountFeature = accountFeature;

      AMAConfig amaConfig = (AMAConfig)getValue("#

      {amaConfig}

      ", AMAConfig.class);

      if("1".equals(accountFeature))

      { this.cardOrCheckType = "SCO"; checkTypeMap = amaConfig.getSilverLevelCheckTypeMap(); }

      else if("2".equals(accountFeature))

      { this.cardOrCheckType = "GCC"; checkTypeMap = amaConfig.getGoldLevelCheckTypeMap(); }

      else

      { this.cardOrCheckType = "PCC"; checkTypeMap = amaConfig.getPlatinumLevelCheckTypeMap(); }

      }

      public void setCardOrCheckType(String cardOrCheckType)

      { this.cardOrCheckType = cardOrCheckType; }

      public String getCardOrCheckType()

      { return this.cardOrCheckType; }

      public Map getAccountFeatureMap()

      { return this.accountFeatureMap; }

      public Map getCheckTypeMap()

      { return this.checkTypeMap; }

      public void processAccountFeatureChange(ValueChangeEvent vce)

      { System.out.println("\nprocessAccountFeatureChange\n"); selectCardOrCheckType.setValue(null); }

      }

      I declared my bean as

      <managed-bean>
      <managed-bean-name>dropdownbean</managed-bean-name>
      <managed-bean-class>DropDownBean</managed-bean-class>
      <managed-bean-scope>request</managed-bean-scope>
      </managed-bean>

      Please help me.

      Attachments

        Activity

          People

            Unassigned Unassigned
            vijayrcse@gmail.com Vijay Ramalingam
            Votes:
            2 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: