gpt4 book ai didi

java - Primefaces selectOneMenu 不会在更改时执行

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:49 25 4
gpt4 key购买 nike

我正在编写 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>

当支持 bean 中的值发生变化时,someMethod()将被调用。

我建议您使用 setSelectedPowerBallDrawingDate(String selectedPowerBallDrawingDate)仅作为设置值的 setter ,根本不包含任何业务逻辑。然后让你从<p:ajax/>调用的方法执行业务逻辑。

关于java - Primefaces selectOneMenu 不会在更改时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15589305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com