【问题标题】:Mojarra 2.1.14 flash scope messages and redirect to different pathMojarra 2.1.14 闪存范围消息并重定向到不同的路径
【发布时间】:2012-09-25 05:50:18
【问题描述】:

据此:http://java.net/jira/browse/JAVASERVERFACES-2136 flash-“作用域”消息应该在重定向到不同路径上的页面后仍然存在。我想在我的应用程序中使用类似的东西,所以我下载了 javax.faces-2.1.14- 20121003.074348-10 来自这里的快照 https://maven.java.net/content/repositories/snapshots/org/glassfish/javax.faces/2.1.14-SNAPSHOT/ 进行测试。

我的情况是这样的:我在根目录中有一个页面(称为 test.xhtml),在调用构造函数期间在视图范围的支持 bean 中进行检查并使用 Omnifaces Message.addFlashGlobalInfo 有条件地设置一条消息并使用 Omnifaces Faces.Redirect() 重定向到根目录中的 index.xthml(感谢 BalusC!)。在 index.xhtml 我有一个 Primefaces

<p:messages id="msg" showDetail="false" autoUpdate="true" />

我在其他页面中也使用上述相同的“配置”,当重定向到称为 bean 方法的同一页面时,它可以正常工作。

所以消息不应该在不同的路径重定向中幸存下来还是我误解了这个问题?也许这里还有其他问题??

提前致谢! (我期待听到 BalusC 对此的意见 :))

【问题讨论】:

  • 如果您在操作方法中设置 flash 消息并从中返回带有“faces-redirect=true”的页面会发生什么?
  • @MikeBraun 这是我现在正在尝试的......奇怪的事情发生了:).. 我在 2 个命令按钮中放置了 2 个操作,每个操作设置一条消息,一个重定向到 index.xhtml,另一个重定向到test.xhtml 使用上面的“配置”。它的工作原理应该出现在 index.html 上的消息.. 但是如果它们在构造函数中,为什么相同的 2 行代码不起作用??
  • 我真的不知道,呃,PostConstruct 注释方法呢?这行得通吗?
  • 我刚刚使用<f:event type="preRenderView" > 调用了一个确实设置消息和重定向的init 方法,但再次没有消息出现!所以我认为 PostConstruct 也不会起作用..
  • 如果preRenderView 不起作用,那么@PostConstruct 很可能也不起作用。

标签: jsf-2 primefaces mojarra omnifaces flash-scope


【解决方案1】:

我只是用来调用一个初始化方法来设置消息和重定向,但再次没有消息出现!!所以我认为 PostConstruct 也不会起作用..

确实,<f:event type="preRenderView"> 设置快讯已经太迟了。当 JSF 当前处于渲染响应阶段时,无法创建 flash 范围。您基本上需要在 before 渲染响应阶段设置 flash 消息。尽管名称为preRenderView,但该事件实际上是在(最开始)呈现响应阶段时触发的。

@PostConstruct可能准时,前提是它在渲染响应期间没有被调用。但是,这与<f:viewParam> 一起使用时效果不佳。

要解决此问题,因为您已经在使用 OmniFaces,只需使用 <f:event type="postInvokeAction">

<f:metadata>
    <f:viewParam name="some" value="#{bean.some}" />
    <f:event type="postInvokeAction" listener="#{bean.init}" />
</f:metadata>

另见:

【讨论】:

  • 很好的答案!!确实有效! Omnifaces来救援!旁注是否有任何方法可以在调用 postInvokeAction 之前绕过 ?它与omnifaces代码有关还是JSF限制?再次感谢!
  • 不客气。这是一个 JSF 限制。没有它,将不会输入应用请求值直到调用操作阶段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-18
  • 2013-04-18
  • 1970-01-01
相关资源
最近更新 更多