在adf中隐藏show component

时间:2014-06-25 05:25:07

标签: java oracle-adf managed-bean

我有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中完成

1 个答案:

答案 0 :(得分:0)

这有两个步骤:

  1. valuePassThru="true"组件添加selectOneChoice

  2. 在值更改侦听器代码中添加valueChangeEvent.getComponent().processUpdates(FacesContext.getCurrentInstance());作为第一行。

  3. 有关详情,请参阅https://community.oracle.com/people/2623233/blog/2015/02/05/valuechangeevent-does-not-fire-for-afselectonechoice-in-adf