8

我想了解在 JSF2.0 中添加标签"?faces-redirect=true"的 action 属性背后的语义是什么。<h:commandlink>无论有没有它,应用程序确实导航到操作中指定的目标页面。所以乍一看似乎唯一的效果是装饰性的,即向用户提供反馈(如果他正在查看浏览器访问的 URL)他已经移动到一个新页面。但是,如果它是如此无害且无副作用,我不明白为什么它不是默认行为。我怀疑这与JSF2.0的基于post的机制有关。我在浏览 JSF 应用程序时注意到,在他的浏览器上看到的 URL(当?faces-redirect=true不使用时)是“上一个”“页面”的 URL。

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

4

1 回答 1

12

根本不应该使用 POST 执行逐页导航。您应该使用 normal <h:link>or<h:button>代替<h:commandLink>or <h:commandButton>

所以而不是

<h:commandLink value="Next page" action=nextpage.xhtml?faces-redirect=true" />

你实际上应该使用

<h:link value="Next page" outcome="nextpage.xhtml" />

这具有该网站现在对 SEO 友好的主要好处。Searchbots 即不索引表单。

<h:commandLink> 当您需要提交带有一些用户输入的表单时才使用。但是,如果需要有条件地呈现/包含,结果往往只是呈现在同一页面中。只有在绝对需要转到不同页面(例如登录/注销)的成功提交时,您确实应该发送重定向。这就是所谓的Post-Redirect-Get 模式

也可以看看

于 2012-06-28T13:02:48.407 回答