我正在使用JSF 2.0。导航到另一个页面时,我的网址没有变化。在faces-config.xml
。
<navigation-rule>
<from-view-id>/pages/common_attribute_list.xhtml</from-view-id>
<navigation-case>
<from-outcome>editManageCommon</from-outcome>
<to-view-id>/pages/add_common_attribute.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
我在导航案例中没有使用<redirect>
,因为我还要在其他页面中显示面部消息。如果我添加<redirect>
,则会停止显示面部消息。如何在不添加<redirect>
的情况下更改网址?
答案 0 :(得分:0)
要更改浏览器地址栏中的URL,您必须告诉浏览器在该URL上触发新的HTTP请求。这正是重定向在幕后的作用。所以真的需要保留它。
回到面向消息在重定向时丢失的不良后果,这完全是预期的,因为它们是请求作用域,并且您使用重定向基本上会丢弃当前请求并创建新请求。通过将面部消息存储在所谓的闪存范围中,您可以让面部消息在重定向中存活。
这只是在添加消息时调用Flash#setKeepMessages()
传递true
的问题。
context.addMessage(message);
context.getExternalContext().getFlash().setKeepMessages(true);