<commandlink action = ...>中"?faces-redirect = true"的语义,以及为什么不在任何地方使用它

Mar*_*tus 8 navigation jsf post redirect

我想了解在JSF2.0中附加标记"?faces-redirect=true"的action属性背后的语义是什么<h:commandlink>.无论是使用它还是使用它,应用程序确实导航到操作中指定的目标页面.所以乍一看,似乎唯一的效果就是整容,即向用户提供反馈(如果他正在查看浏览器的访问过的URL),他已经移动到新页面.但如果它是如此无害且无副作用,我无法理解为什么它不是默认行为.我怀疑它与JSF2.0的基于post的机制有关.我通过对网址人们看到他的浏览器(当一个JSF应用程序在浏览时已经注意到?faces-redirect=true不使用)是'前’,'页面的次数.’

元NB.我在防火墙后面并且受到"SO需要来自另一个域的外部JavaScript"问题的困扰,所以我为没有格式化而道歉.当我可以从其他域访问时,我还会在几个小时内提供有关您的答案的反馈.

Bal*_*usC 11

根本不应使用POST执行页面到页面的导航.您应该使用普通<h:link><h:button>为此而不是<h:commandLink><h:commandButton>.

而不是

<h:commandLink value="Next page" action=nextpage.xhtml?faces-redirect=true" />
Run Code Online (Sandbox Code Playgroud)

你应该真正使用

<h:link value="Next page" outcome="nextpage.xhtml" />
Run Code Online (Sandbox Code Playgroud)

这有一个主要的好处,该网站现在SEO友好.Searchbots即不索引表格.

如果您需要提交包含某些用户输入的表单,请<h:commandLink> 使用此选项.但是,如果需要有条件地渲染/包含,结果通常只会出现在同一页面中.只有在绝对需要转到不同页面的成功提交(例如登录/注销)时,您才应该发送重定向.这就是所谓的Post-Redirect-Get模式.

也可以看看