我有一个带有“显示更多结果”按钮的搜索结果页面。支持 bean 是会话范围的,我们使用 preRenderView 在支持 bean 中执行搜索方法:
<f:event type="preRenderView" listener="#{SearchBean.searchSolutions}" />
“显示更多结果”按钮的定义如下:
<h:commandButton action="#{SearchBean.onClickShowMoreResults()}">
<f:ajax disabled="false" render=":searchResultsForm"/>
</h:commandButton>
这是我遇到的问题和重现的步骤:
- 执行搜索。
- 单击导致结果页面的搜索结果。
- 使用浏览器的后退按钮。
- 单击“显示更多结果”按钮。
- 问题->未调用 onClickShowMoreResults() 函数,而是调用了 searchSolutions() 侦听器方法(这种情况间歇性发生,大多数情况下该函数被正确调用,一旦我遇到问题,一切都很好,我可以重现它每次都使用步骤 2 到 4,而无需开始新的搜索)。
我尝试在侦听器方法中跳过 ajax 请求(如此处所述),它解决了问题,但这对我来说是不可能的,因为有需要执行侦听器方法的 ajax 请求(更改搜索条件)。
关于 preRenderView 有什么我不明白的地方,还是有另一种方法可以实现我想要做的事情?
谢谢您的帮助!