问题描述
||
我不想将ѭ0附加到我的ѭ1的每个动作中,而是想在ѭ2action中永久使用它一次,但是我不确定使用它的后果。
规定使用
redirect
代替instead4ѭ。但是后果是什么?这是一种不好的做法吗,是否会影响持久性以及servlet的请求和响应?
对我来说,使用REDIRECT仅用于正确显示URL浏览器。
我打算使用这样的东西:
<navigation-rule>
<from-view-id>/*</from-view-id>
<navigation-case>
<from-outcome>*</from-outcome>
<redirect />
</navigation-case>
</navigation-rule>
非常感谢您的指导。
解决方法
重定向基本上指示浏览器创建全新的HTTP GET请求。因此,在进行重定向时,所有请求(和视图)作用域的Bean都将被丢弃。在表单操作期间设置的任何请求范围的数据在新请求中将不再可用。如果这是一个主要问题,那么最好的选择是将其放在会话范围内,但这会带来更大的后果:会话范围Bean中的任何更改都会反映在同一浏览器选项卡/窗口中发生的所有操作中会议。一种替代方法是将感兴趣的数据作为重定向URL的查询字符串传递,但这很麻烦且丑陋。
如果实际上没有任何数据需要保留在重定向请求中,则可以这样做。但是,这带来了一个新的问题:为什么要使用POST请求?您是否正在向服务器提交内容?还是将其用于纯页面到页面导航?这个问题使我认为是后者。在这种情况下,您根本不应该使用POST进行页面间导航,而应该使用GET。这可以通过
<h:button>
(及其等效链接<h:link>
)实现。
<h:button value=\"Next page\" outcome=\"nextpage\" />
如果实际上是前者,我会坚持下去。您不想为POST请求添加书签。
也可以看看:
什么时候应该使用h:outputLink而不是h:commandLink?