【发布时间】:2020-03-10 15:12:53
【问题描述】:
我有一个由 ajax 完成的不同计算的页面。
在页面的末尾应该有一个提示文本,每次计算后都会更新。
为此,我使用 Primefaces 的autoUpdate 功能。
当我最初加载页面时,文本显示正确。同样在第一次计算之后,文本也会正确刷新。
但是如果我做进一步的计算,文本将不再改变,无论balanceController.getBalance()返回哪个值。
当我调试我的代码时,我看到balanceController.getDetails() 运行正确并且还返回了所需的文本。只有我页面上的内容没有刷新。当我手动重新加载页面(使用浏览器)时,会出现正确的文本。
<p:autoUpdate/> 仅在第一次计算期间执行并更新选项卡内容可能是什么原因?
balancePage.xhtml
<p:tab title="Further details" rendered="#{balanceController.showDetails()}">
<p:autoUpdate/>
<h:outputText value="#{balanceController.details}"/>
</p:tab>
BalanceController.java
public String getDetails() {
if ( getBalance() >= 0 ) {
return "Your current balance is: " + Double.toString(getBalance());
} else {
return "Your credit has been used up!";
}
}
【问题讨论】:
-
是
rendered属性false第二次吗?看this -
不,渲染的
attribute是true,只是应用启动时加载的属性。 -
也许可以尝试通过 id 进行更新。还要检查浏览器的控制台 (F12)
-
总是minimal reproducible example 和版本信息!
-
如果您在 jsf/primeFaces 面板而不是选项卡中尝试此操作,那么它是否也只能工作一次?提示:您不能仅更新单个选项卡的内容或整个选项卡视图
标签: jsf primefaces