Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.2.11-core
-
None
-
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="#
" binding="#
{dropdownbean.selectAccountFeature}" autoSubmit="true" value="#
{dropdownbean.accountFeature}" id="selectAccountFeature" size="1">
<f:selectItems value="#
" />
</tr:selectOneChoice>
<tr:selectOneChoice binding="#
" partialTriggers="selectAccountFeature" value="#
{dropdownbean.cardOrCheckType}" id="selectCardOrCheckType" size="1">
<f:selectItems value="#
" />
</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.