我的JSF2应用程序标题中的ap:poll元素每秒都会触发,以检查拍卖结束时间(可能会在后台随时改变,我必须保持最佳状态。)我是现在注意到,每当轮询开始时,都会调用标头中的所有“呈现”方法。这是为什么?它怎么能停止?
可能与此相关的代码部分:
<td>Remaining Time:
<h:outputText id="remTime" value="#{auctionBean.remainingTime}"/>
<p:poll listener="#{auctionBean.calcRemainingTime()}" interval="1" update="remTime" />
</td>
编辑:
更多关于我的功能要求。我有一个带有八个链接的主页:页眉上有5个,页脚上有3个链接。我还有一个搜索组件,我需要显示 - 一旦用户登录 - 其中3个链接。我这样做的方法是在会话中传递“fromPage”属性,并决定显示或隐藏搜索组件。
当我使用h:commandLink进行所有主页链接时,一切正常。但是出现了另一个问题:JSF网址只需点击一下就可以了。这是一个已知问题,所以我不会详细解释它。
行。所以我转到了h:link。现在,每次点击都会更改网址,并且行为正常。但是对于每次点击,所有“结果”方法 - 对于主页上的所有8个链接 - 从左到右从上到下调用。是的,每次点击都会调用所有8个“结果”方法。网址正确更改并且页面正确显示,但会话中的“fromPage”属性始终用于最后一个名为:右下角的链接。
为了让事情变得更奇怪,我的搜索组件始终显示,因为标题上的最后一个链接是应该显示的链接。当我通过在页面上添加另一个链接(右上角)来测试此搜索时,搜索不应显示,搜索现在不会显示。
行。我可以简单地放弃url显示正确的页面,切换回commandLinks,继续我的生活。但我想要做对,并帮助我的用户。有解决方案吗?
答案 0 :(得分:0)
对流程属性使用部分处理,仅处理必要的内容。
答案 1 :(得分:0)
h:link
使用JSF规范称之为“抢先导航”的内容。来自规范:
导航案例在解决期间解决 在客户端激活链接之前渲染响应阶段(并且可能永远不会激活链接)。
这样,您可以像使用h:commandLink
操作一样使用导航规则。但是,如果结果是EL方法表达式,则在渲染响应阶段将调用您调用它的“结果方法”。这是预期的行为。
我认为可能对您有用的另一种方法是在结果中添加查询参数,并在目标页面上放置f:viewParam
。例如:
page1.xhtml
<h:link value="Page 2" outcome="page2?fromPage=page1"/>
page2.xhtml
<f:metadata>
<f:viewParam name="fromPage" value="#{page2.fromPage}"/>
</f:metadata>
现在您可以使用#{page2.fromPage}
进行条件渲染。这可能还避免了必须在会话中存储fromPage
。