[英]Primefaces selectOneMenu does not execute on change
我正在寫一個PrimeFaces應用程序。 我的XHTML中有以下代碼:
<p:selectOneMenu value="#{lottoCheckerBean.selectedPowerBallDrawingDate}">
<f:selectItems value="#{lottoCheckerBean.powerBallDrawingDates}" />
</p:selectOneMenu>
我期待在選擇值時在我的LottoCheckerBean
執行以下代碼:
public void setSelectedPowerBallDrawingDate(String selectedPowerBallDrawingDate) {
//get drawing
PowerBallDrawing currentDrawing = null;
for (int d = 0; d < powerBallDrawings.size(); d++) {
if (powerBallDrawings.get(d).getDrawingDate().equals(selectedPowerBallDrawingDate)) {
currentDrawing = powerBallDrawings.get(d);
break;
}
}
if (currentDrawing == null) {
try {
//create new drawing;
currentDrawing = new PowerBallDrawing(selectedPowerBallDrawingDate);
powerBallDrawings.add(currentDrawing);
Arrays.sort(powerBallDrawings.toArray());
} catch (Exception ex) {
//will not happen so ignore
}
}
this.selectedPowerBallDrawingDate = selectedPowerBallDrawingDate;
}
但是,如果我在上述方法的開頭設置斷點,則不會達到斷點。
我錯過了什么?
當您提交放置selectOneMenu
的表單時,將調用您希望在更改時執行的代碼。 那時selectOneMenu
的值將傳遞給你的bean。
如果您想要在任何其他事件(例如更改)上執行某些操作,則需要啟用ajax :
<p:selectOneMenu value="#{lottoCheckerBean.selectedPowerBallDrawingDate}" >
<f:selectItems value="#{lottoCheckerBean.powerBallDrawingDates}" />
<p:ajax event="change" listener="#{lottoCheckerBean.someMethod}" />
</p:selectOneMenu>
當在backing bean中更改值時,將調用someMethod()
。
我建議你只使用setSelectedPowerBallDrawingDate(String selectedPowerBallDrawingDate)
作為設置值的setter,而不是根本不包含任何業務邏輯。 然后讓您從<p:ajax/>
調用的方法執行業務邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.