【问题标题】:hide show componant in adf在 adf 中隐藏显示组件
【发布时间】: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


【解决方案1】:

有一个两步解决方案:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-07-06
    • 2019-07-27
    • 2022-11-28
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    相关资源
    最近更新 更多