我正在使用JSF应用程序,我看到浏览器导航栏中显示的URL始终是我刚刚离开的页面,而不是我正在使用的页面。
答案 0 :(得分:5)
这是因为您从服务器转发(未重定向)到另一个页面。要重定向,您需要在返回时设置以下参数
?faces-redirect=true
答案 1 :(得分:2)
如果您使用POST进行导航,则会发生这种情况。 commandlinks / CommandButton控件。如果它是纯粹的页面到页面导航,而您实际上不需要向服务器提交任何内容,那么您就会遇到更大的问题。你确实会得到这个讨厌的“副作用”,你的链接将不是可收藏的,也不是搜索可抓取的。正如其他答案所建议的那样,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" />
答案 2 :(得分:0)
默认情况下,JSF执行指向原始页面URL的POST操作。如果您使用<navigation-rule>
,则可以指定<redirect/>
让浏览器执行其他请求,这样目标网页的网址就会显示在导航栏中。