【问题标题】:ValueCangeListener work on second try in JSF 2.0ValueCangeListener 在 JSF 2.0 中进行第二次尝试
【发布时间】:2014-03-18 12:54:12
【问题描述】:

我有两个 selectOneMenu 元素,它们的 id 唯一不同。 valueChangeListener 在第二次尝试时起作用。 第一次尝试,页面正在刷新,但没有去 valueChangeCode,因此没有 value 变化。在第二次尝试时,它会使用 valueChangeCode 并获得新值,并且 selectOneMenu 都显示新值。

            <h:selectOneMenu id="changeCurrency" value="#dataBean.showCurrency}"                valueChangeListener="#myBean.changePaymentCurreny}"
valueChangeListener="#{myBean.changePaymentCurreny}"
                immediate="true"
                onchange="submit()">
                <f:selectItems value="#{my.currencyList}" />
            </h:selectOneMenu>
           <h:selectOneMenu id="changeCurrency2" 
                value="#{dateBean.showCurrency}" 
                valueChangeListener="#{myBean.changePaymentCurreny}"
                immediate="true"
                onchange="submit()">
                <f:selectItems value="#{myBean.currencyList}" />
          </h:selectOneMenu>

在 ValueChangeListener 代码中。

dataBean.setShowCurrency(newCurrency);
FacesContext.getCurrentInstance().renderResponse();
FacesContext.getCurrentInstance().getViewRoot().getChildren().clear();

当我删除以 getChidren.clear 结尾的行并更改其中一个的值时,调用 changeListener 并在第一次尝试时更改值。 在视图中,我更改的只有一个选择菜单显示了新值。其他 selectOnemenu 仍然显示旧值。

dataBean 和 myBean 在 sessionScope 中。当我将 myBean 放在 requestscope 上时,适用于页面加载的 ajax 请求不会导致 mybean 为空。

谁能把这个站说清楚。 非常感谢。

【问题讨论】:

    标签: jsf-2


    【解决方案1】:

    尝试为这样的 ajax 事件标签更改 valueChangeListener。

    <h:selectOneMenu id="changeCurrency" value="#dataBean.showCurrency}" valueChangeListener="#myBean.changePaymentCurreny}" onchange="submit()"> 
       <f:selectItems value="#{my.currencyList}" />
       <f:ajax event="change" listener="#{myBean.changePaymentCurreny}" process="@this" partialSubmit="true"  />    
    </h:selectOneMenu>
    
    <h:selectOneMenu id="changeCurrency2" value="#{dateBean.showCurrency}" onchange="submit()">
       <f:selectItems value="#{myBean.currencyList}" />
       <f:ajax event="change" listener="#{myBean.changePaymentCurreny}" process="@this" partialSubmit="true"  />  
    </h:selectOneMenu>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 2020-06-10
      • 1970-01-01
      • 2020-12-11
      • 2020-11-29
      相关资源
      最近更新 更多