【发布时间】:2014-06-25 05:25:07
【问题描述】:
我有 3 个 SelectOneChoice,它们 不 用于数据控制,这取决于第一个 SelectOneChoice 的值,其他 2 个 SelectOneChoice 应该显示和隐藏。 我使用了 manged bean,并在第一个 SelectOneChoice 中使用了 valueChangeListener,以根据选择隐藏和显示其他 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 中完成
【问题讨论】:
-
你试过把 valueChangeEvent.getComponent().processUpdates(FacesContext.getCurrentInstance());作为托管 bean 代码的第一行?此外,我在您的页面源代码中没有看到两个 LOV 的绑定参考。
标签: java oracle-adf managed-bean