我知道使用页面转发有一些优点,因为它是JSF的默认设置。我也知道如何在隐式导航或faces-config文件中的标签中使用"faces-redirect"为某些页面设置重定向。我在互联网上搜索了很多,但我没有找到一个简单而直接的方法(如配置参数)来启用所有页面的重定向。我想在任何地方使用页面重定向的原因如下:如果每个页面都被询问其url,则容器可用于页面授权,而无需额外的安全库。我不知道这是不是一个好主意,但是在这个时刻,性能不是问题,使用容器安全性可以节省第一个版本的开发时间。
您可以使用自定义ConfigureableNavigationHandler
来实现这一点。您可以在这个问题的答案中找到一个启动示例:JSF 2和Post/Redirect/Get?
然而,我有一种感觉,你正在设计页到页的导航错误的方式。您似乎正在使用POST请求进行简单的页面到页面导航。如果将它们修改为GET请求,那么就不需要担心这个问题。因此,使用<h:link>
代替<h:commandLink>
进行页面到页面的导航。这样你就不需要执行PRG了。请参见我何时应该使用h:outputLink而不是h:commandLink?