Jsf 可通过查看参数功能设置书签
通过使用JSF隐式导航的Jsf 可通过查看参数功能设置书签,jsf,jsf-2,bookmarks,Jsf,Jsf 2,Bookmarks,通过使用JSF隐式导航的includeViewParams=true查询参数,是否可以实现书签功能?如果是,那么怎么做?首先,我们需要了解“书签能力”到底是什么,以及includeViewParams到底做了什么。这样可以更好地理解两者结合的效果 Bookmarkability涉及HTTP请求URL的精确形式,如您在浏览器的地址栏中所看到的。它正是最终用户将存储在其书签中的URL和/或将复制粘贴到其他位置作为链接,如论坛、聊天室、某些社交媒体,或只是一个新的浏览器窗口/选项卡等。当跟踪链接或将U
includeViewParams=true
查询参数,是否可以实现书签功能?如果是,那么怎么做?首先,我们需要了解“书签能力”到底是什么,以及includeViewParams
到底做了什么。这样可以更好地理解两者结合的效果
Bookmarkability涉及HTTP请求URL的精确形式,如您在浏览器的地址栏中所看到的。它正是最终用户将存储在其书签中的URL和/或将复制粘贴到其他位置作为链接,如论坛、聊天室、某些社交媒体,或只是一个新的浏览器窗口/选项卡等。当跟踪链接或将URL复制粘贴到浏览器的地址栏中时,默认情况下将触发HTTP GET请求。如果每次的结果都是完全相同的(不考虑授权/认证和页面的时间敏感性-搜索结果、最新消息等),那么我们可以讨论一个可书签的URL。技术术语是“HTTP请求”
但是,如果最终用户事先在该URL上提交了一个POST表单,并且没有执行重定向,则该URL不一定是可书签的。提交的表单数据不会反映在URL中。将URL复制粘贴到新的浏览器窗口/选项卡可能不一定会产生与表单提交后完全相同的结果。这样的URL就不可添加书签。POST不是幂等的。这就是为什么
书签能力通常通过URL路径和/或查询参数的特定构造来实现。如果你看看谷歌,搜索结果是可书签的,这多亏了q
querystring参数
在JSF术语中,这些请求参数可以通过以下方式设置(并转换和验证):
(当然是由一些
左右生成的)
当使用q=bookmarkability
进入页面时,将产生以下链接
/search.xhtml?q=bookmarkability
/search.xhtml?start=10&q=bookmarkability
/search.xhtml?start=20&q=bookmarkability
这些是可书签的URL,而
includeViewParams
使创建它们更加方便。“需要从viewId或到viewId?只需要将其放置在GET请求打开的顶级视图(XHTML文件)中。答案中没有任何导航案例/规则,正如您的评论所暗示的那样。
<f:metadata>
<f:viewParam name="q" value="#{bean.query}" />
<f:viewAction action="#{bean.search}" />
</f:metadata>
<f:metadata>
<f:viewParam name="q" value="#{bean.query}" />
<f:viewParam name="start" value="#{bean.start}" />
<f:viewAction action="#{bean.search}" />
</f:metadata>
<h:link value="1" outcome="search" includeViewParams="true">
<f:param name="start" value="#{null}" />
</h:link>
<h:link value="2" outcome="search" includeViewParams="true">
<f:param name="start" value="10" />
</h:link>
<h:link value="3" outcome="search" includeViewParams="true">
<f:param name="start" value="20" />
</h:link>
...