JSF <重定向/>使用的后果



与其将?faces-redirect=true附加到<h:commandButton />中的每个操作,我想在faces-config.xml中永远使用它一次,但我还不确定使用它的后果。

它规定将使用redirect而不是forward。但后果是什么?这是一种糟糕的做法吗?它会影响持久性和servlet请求和响应吗?

对我来说,REDIRECT的使用只是为了正确显示URL浏览器。我打算使用这样的东西:

<navigation-rule>
    <from-view-id>/*</from-view-id>
    <navigation-case>
        <from-outcome>*</from-outcome>
        <redirect />
    </navigation-case>
</navigation-rule>

非常感谢您的指导。

重定向基本上指示浏览器创建一个全新的HTTPGET请求。因此,在进行重定向时,所有请求(和视图)范围的bean都将被丢弃。在表单操作期间设置的任何请求范围的数据在新请求中将不再可用。如果这是一个主要问题,那么你最好把它放在会话范围内,但这会产生更大的后果:会话范围内的bean中的任何更改都会反映在同一会话中不同浏览器选项卡/窗口中发生的所有操作中。另一种选择是将感兴趣的数据作为重定向URL的查询字符串传递,但这非常麻烦和丑陋。

如果您确实有no需要保留在重定向请求中的数据,那么您可以这样做。但这带来了一个新的问题:您为什么要使用POST请求?您是否正在向服务器提交内容?或者您是在使用它进行纯页面到页面的导航?这个问题让我觉得是后者。在这种情况下,您根本不应该使用POST进行页面到页面的导航,而应该只使用GET。这可以通过<h:button>(及其链路等效<h:link>)来实现

<h:button value="Next page" outcome="nextpage" />

如果真的是前者,我会坚持下去。你不想给POST请求加书签。

另请参阅:

  • 什么时候应该使用h:outputLink而不是h:commandLink

相关内容

  • 没有找到相关文章

最新更新