« Return to Thread: [jira] Created: (TRINIDAD-1523) Issue with - Implementing dependent select boxes

[jira] Commented: (TRINIDAD-1523) Issue with <tr:selectOneChoice> - Implementing dependent select boxes

by My Faces - Dev mailing list :: Rate this Message:

Reply to Author | View in Thread


    [ https://issues.apache.org/jira/browse/TRINIDAD-1523?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12756982#action_12756982 ]

Vijay Ramalingam commented on TRINIDAD-1523:
--------------------------------------------

Rafael/Borja,

Thanks a lot for your valuable inputs and suggestions.

selectCardOrCheckTypeChoice.setSubmittedValue(null); // this is needed to reset the child menu.

But i did make one more change to it, in the faces-config.xml. I changed the scope to session. Borja, can you try that in your problem?

Please find below an working example of multiple dependent boxes. However this doesn't uses trinidad( only JSF ).
But this might help you. basically we need to have a very good understanding on the JSF life-cycle.

http://balusc.blogspot.com/2007/10/populate-child-menus.html

Thanks
-vijay.

> Issue with <tr:selectOneChoice> - Implementing dependent select boxes
> ---------------------------------------------------------------------
>
>                 Key: TRINIDAD-1523
>                 URL: https://issues.apache.org/jira/browse/TRINIDAD-1523
>             Project: MyFaces Trinidad
>          Issue Type: Bug
>          Components: Components
>    Affects Versions:  1.2.11-core
>         Environment: Windows
>            Reporter: Vijay Ramalingam
>
> 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.

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

 « Return to Thread: [jira] Created: (TRINIDAD-1523) Issue with - Implementing dependent select boxes