gpt4 book ai didi

jsf-2 - Mojarra 2.1.14 flash 范围消息并重定向到不同的路径

转载 作者:行者123 更新时间:2023-12-04 05:30:11 26 4
gpt4 key购买 nike

据此:http://java.net/jira/browse/JAVASERVERFACES-2136 flash-"scoped"消息应该在重定向到不同路径上的页面后仍然存在。
https://maven.java.net/content/repositories/snapshots/org/glassfish/javax.faces/2.1.14-SNAPSHOT/测试。

我的情况是这样的:我在根目录中有一个页面(称为 test.xhtml),在调用构造函数期间在 View 范围的支持 bean 中进行检查并使用 Omnifaces 有条件地设置消息 Message.addFlashGlobalInfo并使用 Omnifaces 重定向到根目录中的 index.xthml Faces.Redirect() (感谢 BalusC!)。在 index.xhtml 我有一个 Primefaces
<p:messages id="msg" showDetail="false" autoUpdate="true" />
我在其他页面中也使用了上述相同的“配置”,当重定向到称为 bean 方法的同一页面时,它工作正常。

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

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

最佳答案

i just used to call an init method that does sets message and redirects but again no message appears!! so i don't think PostConstruct will work either..



确实, <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 - Keep Faces Messages after redirect from @PostConstruct
  • Adding faces message to redirected page using ExternalContext.redirect()
  • 关于jsf-2 - Mojarra 2.1.14 flash 范围消息并重定向到不同的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12723100/

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