[英]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.