簡體   English   中英

Primefaces selectOneMenu在更改時不執行

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

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