1

我正在使用 JSF 应用程序,我看到浏览器导航栏中显示的 URL 始终是我刚刚离开的页面,而不是我所在的页面。

4

3 回答 3

6

这是因为您从服务器被转发(而不是重定向)到另一个页面,要重定向,您需要在返回时设置以下参数

?faces-redirect=true 
于 2012-08-27T10:06:59.147 回答
3

如果您使用 POST 通过例如命令链接/命令按钮进行导航,就会发生这种情况。如果它是纯粹的页面到页面导航并且您实际上不需要向服务器提交任何内容,那么您的问题就更大了。您确实会得到这种令人讨厌的“副作用”,并且您的链接将不能被收藏,也不能被搜索机器人抓取。正如其他答案所建议的那样, PRG(Post-Redirect-Get)确实可以解决书签(“一个 URL 后面”)问题,但它肯定不会解决搜索机器人无法抓取/索引页面的问题。

只是不要首先使用 POST 进行简单的页面到页面导航。为此使用 GET。使用<h:link>代替<h:commandLink>等等。在代码中,全部替换

<h:form>
    <h:commandLink value="Next page" action="nextpage" />
</h:form>

经过

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

也可以看看:

于 2012-08-27T11:59:40.033 回答
0

默认情况下,JSF 执行定向到原始页面 URL 的 POST 操作。如果使用 a <navigation-rule>,可以指定<redirect/>让浏览器执行附加请求,这样目标页面的 URL 就会出现在导航栏中。

于 2012-08-27T10:11:01.060 回答