我有一个带有按钮和标签的 JSF 页面。当用户按下 simulateYearButton
按钮时,标签 yearLabel
中显示的值应该递增。
带有按钮和标签的表单如下所示:
<h:form>
<p:commandButton value="Заресетить" id="resetButton"
actionListener="#{entryPage.resetButtonAction}" />
<p:commandButton value="Просимулировать год" id="simulateYearButton"
actionListener="#{entryPage.simulateYearButtonAction}">
<f:ajax event="click" render="yearLabel" />
</p:commandButton>
<h:outputLabel id="yearLabelLabel" for="yearLabel" value="Год:" />
<h:outputLabel id="yearLabel" value="#{entryPage.yearLabel}"
style="font-weight:bold" />
</h:form>
entryPage
bean 的代码:
@ManagedBean(name = "entryPage")
@RequestScoped
public class EntryPageController {
...
private int year;
private String yearLabel;
@PostConstruct
public void init()
{
this.yearLabel = "2012";
}
...
public void simulateYearButtonAction() {
LOGGER.debug("EntryPageController.simulateYearButtonAction");
this.year++;
this.yearLabel = Integer.toString(this.year);
}
public String getYearLabel() {
return yearLabel;
}
}
当我按下 simulateYearButton
时,方法 simulateYearButtonAction
被执行(我在输出中看到日志消息),但标签没有更新。
我应该如何修改代码以便在按下按钮时更新标签?
最佳答案
新答案:
<p:commandButton value="Просимулировать год" id="simulateYearButton"
actionListener="#{entryPage.simulateYearButtonAction}" update="yearLabel">
</p:commandButton>
因为 commandbutton 默认是 ajax 的。
接下来,您需要创建 bean @ViewScoped。 接下来,您需要将 yearLabel 的值赋给 year :
@PostConstruct
public void init()
{
this.yearLabel = "2012";
this.year = Integer.parseInt(yearLabel);
}
关于java - 在 JSF (Primefaces) 中更新标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12996108/