我想要一个链接,打开p:tabView的特定标签。我试过这个链接,但是
它不起作用(第一个标签打开):/jsf/.....#tabView:tabA
这是我的TabView:
<p:tabView id="tabView">
<p:tab id="tabb" title="B">
</p:tab>
<p:tab id="tabA" title="A">
</p:tab>
</p:tabView>
任何帮助将不胜感激!
答案 0 :(得分:3)
您可以使用PrimeFaces文档中所述的对小部件的javascript调用。 将小部件名称提供给tabView,并使用.select(tabIndex)
更改选项卡如果您从另一个页面重定向,您可以传递一个请求参数(例如../url?tabIndex=0)来确定将激活选项卡,从url参数获取变量并再次使用该选项卡激活客户端api(javascript调用)。
<p:tabView id="tabView" widgetVar="myTabExample">
</p:tab>
<p:tab id="tabb" title="B">
</p:tab>
<p:tab id="tabA" title="A">
</p:tab>
</p:tabView>
<script>
myTabExample.select(0);
</script>
我还添加了一个带参数
的示例 <p:tabView id="tabView" widgetVar="myTabExample">
</p:tab>
<p:tab id="tabb" title="B">
</p:tab>
<p:tab id="tabA" title="A">
</p:tab>
</p:tabView>
<script>
//function to parse get parameters from url
//taken from http://stackoverflow.com/questions/831030/how-to-get-get-request-parameters-in-javascript
function get(name){
if (name=(new RegExp('[?&]'+encodeURIComponent(name)+'= ([^&]*)')).exec(location.search))
return decodeURIComponent(name[1]);
}
myTabExample.select(get("tabIndex"));
</script>
答案 1 :(得分:3)
这是一个替代解决方案,它不需要js并支持浏览器后退导航:
<p:tabView cache="true" activeIndex="#{param.id}">
<p:tab title="First Tab">
// Content
</p:tab>
<p:tab title="Second Tab">
// More Content
</p:tab>
</p:tabView>
在第一个标签打开时加载页面:
/mypage.xhtml?id=0
在第二个标签打开时加载页面:
/mypage.xhtml?id=1
但缺点是您只能使用整数,使用标签ID来添加标签是不可能的。