我試圖在我的JSF 2.0 Web應用程序中使用AJAX,並從selectOneMenu獲取當前值時出現問題。由h:selectOneMenu設置的值在f:ajax監聽器方法中爲null
我的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));
}
但字段附錄的當前值始終爲空。這是如何造成的,我該如何解決這個問題?
附錄是什麼類型的? – mrembisz 2012-01-30 12:24:50
顯示您的'@ ManagedBean'類聲明和所有註釋導入。我懷疑你沒有使用有效的JSF託管bean作用域註釋,因此它默認爲'@ NoneScoped'(即它在每次調用時重建)。調試'setAppendix()'方法應該證實這一點。如果該值已設置,但在偵聽器方法中它變爲「null」,那麼您就知道了。 – BalusC 2012-01-30 13:02:53
BalusC,謝謝你的回答。我現在無法顯示代碼,現在我在家裏沒有工作。但我可以說這個bean被標註爲@SessionBean。 – 2012-01-30 14:43:27