Mojarra 2.1.14闪烁范围消息并重定向到不同的路径



据此:http://java.net/jira/browse/JAVASERVERFACES-2136flash-"作用域"消息应该在重定向到不同路径上的页面后仍然有效。。我想在我的应用程序中使用这样的东西,所以我从这里下载了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),在视图范围的backingbean中,在调用构造函数的过程中,它会进行检查并有条件地使用OmnifacesMessage.addFlashGlobalInfo设置消息,并使用OmnifacesFaces.Redirect()重定向到根目录中的index.xthml(感谢BalusC!)。在index.xhtml中,我有一个Primefaces

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

我在其他页面中也使用了上面描述的相同"配置",当重定向到称为bean方法的同一页面时,它可以很好地工作。

那么,消息是否应该在不同的路径重定向中幸存下来,或者我是否误解了这个问题??也许这里有其他问题??

提前感谢!(我期待着听到BalusC对此的意见,顺便说一句:)

我刚刚调用了一个init方法,该方法可以设置消息和重定向,但再次没有消息出现!!所以我认为PostConstruct也不会起作用

实际上,<f:event type="preRenderView">太晚了,无法设置闪存消息。当JSF当前处于呈现响应阶段时,无法创建flash作用域。您基本上需要在渲染响应阶段之前设置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>

另请参阅:

  • JSF-从@PostConstruct重定向后保留Faces消息
  • 使用ExternalContext.redirect()将faces消息添加到重定向页面

相关内容

  • 没有找到相关文章

最新更新