Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 可通过查看参数功能设置书签_Jsf_Jsf 2_Bookmarks - Fatal编程技术网

Jsf 可通过查看参数功能设置书签

Jsf 可通过查看参数功能设置书签,jsf,jsf-2,bookmarks,Jsf,Jsf 2,Bookmarks,通过使用JSF隐式导航的includeViewParams=true查询参数,是否可以实现书签功能?如果是,那么怎么做?首先,我们需要了解“书签能力”到底是什么,以及includeViewParams到底做了什么。这样可以更好地理解两者结合的效果 Bookmarkability涉及HTTP请求URL的精确形式,如您在浏览器的地址栏中所看到的。它正是最终用户将存储在其书签中的URL和/或将复制粘贴到其他位置作为链接,如论坛、聊天室、某些社交媒体,或只是一个新的浏览器窗口/选项卡等。当跟踪链接或将U

通过使用JSF隐式导航的
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>
...