簡體   English   中英

在f:ajax偵聽器方法中,由h:selectOneMenu設置的值為null

[英]Value set by h:selectOneMenu is null in f:ajax listener method

我試圖在我的JSF 2.0 Web應用程序中使用AJAX,但是從selectOneMenu獲取當前值時遇到問題。

我的JSF頁面的一部分。

<h:panelGrid columns="2">
<h:outputLabel value="Appendix number" for="appendix" />
<h:selectOneMenu id="appendix" value="#{indexMBean.appendix}">
<f:selectItem itemLabel="Point 1" itemValue="1" />
<f:selectItem itemLabel="Point 2" itemValue="2" />
<f:ajax event="change" listener="#{indexMBean.setHazardsByAppendix}" />
</h:selectOneMenu>
</h:panelGrid>

setHazardsByAppendix是indexMBean中的一個過程。 然后觸發該過程,我嘗試獲取h:selectOneMenu的當前值以將其傳遞給另一個過程。

public void setHazardsByAppendix() {
    Logger logger = Logger.getAnonymousLogger();
    logger.warning(this.appendix);
    this.setHazards(this.hazardSessionBean.getHazardByAppendix(this.appendix));
}

但是字段附錄的當前值始終為空。 這是怎么引起的,我該如何解決?

以一種非常奇怪的方式解決了。 我用相同的資源創建了一個新的netbeans項目。 令人驚訝的是,它工作正常。 這真的很奇怪,但是可以。

   `<f:ajax execute="@this" listener="#{templateSearchHandler.OnDefNameSelect}">
 void setHazardsByAppendix(AjaxBehaviorEvent event) {
    Logger logger = Logger.getAnonymousLogger();
    logger.warning(this.appendix);
    this.setHazards(this.hazardSessionBean.getHazardByAppendix(this.appendix));
}`

該代碼調用AjaxBehaviour事件,並通過Ajax將值傳遞給控制器​​。

<h:panelGrid columns="2">
<h:outputLabel value="Appendix number" for="appendix" />
<h:selectOneMenu id="appendix" value="#{indexMBean.appendix}">
<f:selectItem itemLabel="Point 1" itemValue="1" />
<f:selectItem itemLabel="Point 2" itemValue="2" />
<f:ajax execute="@this"listener="#{indexMBean.setHazardsByAppendix}" />
</h:selectOneMenu>
</h:panelGrid>
//Controller
public void setHazardsByAppendix(AjaxBehaviorEvent event) {
    Logger logger = Logger.getAnonymousLogger();
    logger.warning(this.appendix);
    this.setHazards(this.hazardSessionBean.getHazardByAppendix(this.appendix));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM