我有3个SelectOneChoice,它们不到datacontrol,取决于第一个SelectOneChoice的值,另外2个SelectOneChoice应该显示和隐藏。 我使用了manged bean并且我使用valueChangeListener为第一个SelectOneChoice隐藏并根据选择显示另外2个SelectOneChoice,并在另外2个SelectOneChoice中显示部分但是它不起作用
这是第一个SelectOneChoice
<af:selectOneChoice label="acnt type" id="soc10" valueChangeListener="#{backingBeanScope.JasperBean.hideShowAccounts}"
autoSubmit="true" required="true" contentStyle="width:118px">
<af:selectItem label="Cultural Division Accounts" value="CA" id="si12"/>
<af:selectItem label="Students Accounts" value="SA" id="si13"/>
</af:selectOneChoice>
这是另外2个SelectOneChoice
<af:selectOneChoice label="bb"
valueChangeListener="#{backingBeanScope.JasperBean.storeAccount}"
id="soc11" autoSubmit="true" partialTriggers="soc10">
<af:selectItem label="Select Account" value="-1" id="si220"/>
<f:selectItems value="#{backingBeanScope.JasperBean.accounts}" id="si1"/>
</af:selectOneChoice>
<af:selectOneChoice label="aa"
valueChangeListener="#{backingBeanScope.JasperBean.storeAccount}"
id="soc12" autoSubmit="true"
partialTriggers="soc10"
rendered="#{backingBeanScope.JasperBean.saShown}">
<af:selectItem label="Select Account" value="-1" id="si221"/>
<f:selectItems value="#{backingBeanScope.JasperBean.studentAccounts}" id="si121"/>
</af:selectOneChoice>
这是托管bean代码。
public void hideShowAccounts(ValueChangeEvent valueChangeEvent) {
if(valueChangeEvent.getNewValue().toString().equals("CA"))
{
ddlCAaccounts.setRendered(true);
ddlSAaccounts.setRendered(false);
}
else if(valueChangeEvent.getNewValue().toString().equals("SA"))
{
ddlCAaccounts.setRendered(false);
ddlSAaccounts.setRendered(true);
}
}
如果可以使用javascript完成,也告诉我如何,没有必要在托管bean中完成
答案 0 :(得分:0)
这有两个步骤:
为valuePassThru="true"
组件添加selectOneChoice
。
在值更改侦听器代码中添加valueChangeEvent.getComponent().processUpdates(FacesContext.getCurrentInstance());
作为第一行。