gpt4 book ai didi

jquery - PreRenderView 在浏览器返回后跳过按钮操作

转载 作者:行者123 更新时间:2023-12-01 01:47:39 24 4
gpt4 key购买 nike

我有一个带有“显示更多结果”按钮的搜索结果页面。支持 bean 是 session 范围的,我们使用 preRenderView 在支持 bean 中执行搜索方法:

<f:event type="preRenderView" listener="#{SearchBean.searchSolutions}" />

“显示更多结果”按钮的定义如下:

<h:commandButton action="#{SearchBean.onClickShowMoreResults()}">
<f:ajax disabled="false" render=":searchResultsForm"/>
</h:commandButton>

这是我遇到的问题以及重现步骤:

  1. 执行搜索。
  2. 点击搜索结果即可进入结果页面。
  3. 使用浏览器后退按钮。
  4. 点击“显示更多结果”按钮。
  5. 问题 --> 未调用 onClickShowMoreResults() 函数,而是调用 searchSolutions() 监听器方法(这种情况间歇性地发生,大多数时候该函数被正确调用,一旦我遇到问题,一切都会好起来的)每次都可以通过步骤 2 到 4 重现它,而无需开始新的搜索)。

我尝试跳过监听器方法中的ajax请求(如here所述)并且它解决了问题,但这对我来说是不可能的,因为有ajax请求需要执行监听器方法(更改搜索条件) .

关于 preRenderView 有什么我不明白的地方吗?还是有其他方法可以实现我想要做的事情?

感谢您的帮助!

最佳答案

由于没有得到答案,我找到了解决此问题的方法。

我确保没有对监听器方法进行 ajax 调用(做了一些牺牲),并在 this 中使用了 BalusC 的答案。线程。

使用:

if (FacesContext.getCurrentInstance().getPartialViewContext().isAjaxRequest()) { 
return; // Skip ajax requests.
}

在监听器方法中解决了这个问题。

关于jquery - PreRenderView 在浏览器返回后跳过按钮操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18595829/

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