问题标签 [prerenderview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
76018 浏览

jsf - 何时使用 f:viewAction / preRenderView 与 PostConstruct?

什么时候应该使用f:viewActionorpreRenderView事件来初始化页面的数据而不是使用@PostConstruct注释?是否基于支持 bean 的范围类型使用一个或另一个的基本原理,例如如果支持 bean 是@RequestScoped,那么在呈现视图之前选择使用f:viewActionpreRenderView结束@PostConstruct来初始化支持 bean 是否无关紧要,因为两者将产生同样的效果?

f:viewAction 或 preRenderView

或者

@PostConstruct

0 投票
2 回答
8914 浏览

jsf-2 - PreRenderView 在每次回发时增量调用

我对f:event type="preRenderView".

在我在这里搜索的过程中,我发现了 BalusC 在这个这篇与我的问题相关的帖子中的常见答案 - 仍然给我留下了两个问题:

  1. 当我将一个f:event type="preRenderView"放在模板文件中(用于管理常见任务,例如检查适用于我所有视图的用户状态)和f:event type="preRenderView"每个视图中的另一个(用于处理视图特定的初始化)时,我想知道为什么调用视图中的侦听器方法在模板中的那个之前。

  2. 当我按照建议将整个放在<f:metadata><f:event [..] /></f:metadata>后面时,它会在从登录页面重定向到该页面后被调用两次,但是当我在它只被调用一次ui:define之后将它提高一级时。ui:composition


更新:示例

以下示例演示了上述行为:

这是模板文件template_test.xhtml,包含一个preRenderView事件侦听器,该侦听器在所有视图的处理程序中调用一个通用方法:

这是视图文件test.xhtml,还包含一个事件侦听器,用于preRenderView在处理程序中调用视图特定方法和通过处理程序方法重定向的命令按钮:

这是TestHandler.java包含 3 个方法的处理程序类:

现在,这是我在请求测试页面时在我的 tomcat 日志中看到的内容:

这表明没有。1,视图中的事件处理程序在模板中的事件处理程序之前被调用,并且没有。2,从视图中调用事件处理程序两次。

它还显示了第三点(这就是为什么我包含一个带有重定向到同一页面的按钮的原因)显示如果页面被重定向请求会发生什么 - 单个页面被调用更多次:

两者都没有。2 和 3 可以通过将整个元数据部分放在上面ui:define或通过向视图的元数据部分添加一个虚拟参数来防止,该参数不包含在 URL 中:

有人能告诉我这些案件的原因吗?

0 投票
2 回答
12680 浏览

jsf-2 - 如何在 preRenderView 侦听器方法中执行导航

我从<f:metadata>、<f:viewParam> 和 <f:viewAction> 可以用来做什么开始?

我有一个预渲染视图事件监听器:

它调用以下方法:

和以下导航规则:

但是,它不执行导航。它在我使用命令按钮时起作用,如下所示:

0 投票
1 回答
718 浏览

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

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

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

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

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

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

关于 preRenderView 有什么我不明白的地方,还是有另一种方法可以实现我想要做的事情?

谢谢您的帮助!

0 投票
1 回答
479 浏览

jsf - 在预渲染方法中使用 @ManagedProperty

我的 xhtml 中有一个如下所示的数据表:

现在在我的支持 bean 中,我有:

你认为我可以在 preRender 方法中调用 managedproperty 吗?请建议。谢谢。

0 投票
1 回答
445 浏览

jsf-2 - 数据来自执行分页或排序时,在 preRenderView 事件期间从 flash 范围获得的内容会丢失

我有一个可分页和可排序的<p:dataTable>

它的数据是在事件期间从 flash 作用域中获取到一个@ViewScopedbean 中的preRenderView

当我执行分页或排序时,数据会丢失。这是如何引起的,我该如何解决?

0 投票
1 回答
5406 浏览

ajax - 在每个 ajax 请求上调用 preRenderView

我正在使用 jquery waypoints 和 jsf 以下链接实现无限滚动。我对需要无限滚动的 xhtml 之一进行了预渲染。现在,由于航点发送 ajax 请求,所以为什么每次滚动都调用 prerender,这意味着整个页面都在刷新。请让我知道如何解决这个问题。

0 投票
0 回答
402 浏览

ajax - 点击 commandLink 再次调用 preRenderView

在我的 facelet 中,我有以下 commandLink:

这就是我在支持 bean 中的内容:

现在我想在单击 commandLink 后执行方法 exportReport。但是这里发生的是,在执行该方法之后,它将再次进行 preRender。我不想再次渲染整个表单。知道我在这里犯了什么错误吗?

0 投票
0 回答
409 浏览

redirect - JSF 2 重定向到返回按钮或 URL 复制粘贴的第一页(不涉及身份验证)

我有一个 JSF 2.0 应用程序,用于使用自我注册创建帐户。在第一页上,有姓名、电子邮件、uid 等字段。对于任何注册来说,我们都会显示确认页面(以及介于两者之间的其他自定义页面)和最终成功页面。每个页面都使用 faces-redirect=true 在 JSF 中呈现,因此整个过程中有 3-4 个页面(facelets)。在这个应用程序中,我使用 SessionScoped 支持 bean 来显示中间页面/确认页面/最终页面等。注册完成后,我从会话中清除 SessionScope bean 并使会话无效。

问题是:确认页面/中间页面等显示用户从第一页输入的用户详细信息(使用来自支持 bean 的 EL:#sessionBean.firstName 等)。因此,如果用户直接在浏览器中输入此 URL (host/appName/confirmationPage.xhtml),页面将加载空白值(因为用户没有直接进入第一页)。另外,注册完成后,如果用户点击后退按钮会出现空白值(过滤器类中明确设置了no-cache,所以这里不使用缓存,这是正确的行为)

如果 firstName 等不存在,我如何强制用户转到第一页。即当用户登陆页面时,确保用户仅通过此会话的第一页登陆该页面?

应该使用过滤器类吗?还是应该使用 prerenderview 事件来检查空白值并将它们重定向到第一页?这里没有“用户登录”,因为没有身份验证。我相信这是一个常见的用例,我想知道 JSF 中是否有任何最佳实践

0 投票
1 回答
1395 浏览

jsf - preRenderView 中的 jsf 调度错误

在 edit.xhtml 我有

在后备豆中

在浏览器中显示调度正确的页面,但在 tomcat 日志中我低于堆栈跟踪,如何防止堆栈跟踪?我应该使用其他事件吗?我应该以其他方式进行调度吗?

来自tomcat的堆栈跟踪: