Jsf 如何使用primefaces创建类似chrome的选项卡

Jsf 如何使用primefaces创建类似chrome的选项卡,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,还有像chrome firefox书签这样的按钮(比如“google”、“facebook”、“twitter”)。我想做的是,当用户单击一个按钮时,它的相关选项卡将打开。例如,如果用户单击google按钮,则会呈现google选项卡 我已经创建了一些选项卡并绑定了这些选项卡的“渲染”属性。但问题是,当我关闭选项卡时,我无法更改绑定到选项卡“rendered”属性的变量。例如,当我打开并关闭google选项卡,然后单击openFacebookTab按钮时,google选项卡也会与Facebook

还有像chrome firefox书签这样的按钮(比如“google”、“facebook”、“twitter”)。我想做的是,当用户单击一个按钮时,它的相关选项卡将打开。例如,如果用户单击google按钮,则会呈现google选项卡

我已经创建了一些选项卡并绑定了这些选项卡的“渲染”属性。但问题是,当我关闭选项卡时,我无法更改绑定到选项卡“rendered”属性的变量。例如,当我打开并关闭google选项卡,然后单击openFacebookTab按钮时,google选项卡也会与Facebook选项卡一起呈现,因为RenderGogleTab仍然保持为true

我必须以编程方式创建选项卡和选项卡视图,还是有一个简单的解决方案

我的观点

<p:commandButton value="openGoogleTab" actionListener="#{myController.openGoogle()}"/>

<p:commandButton value="openFacebookTab" actionListener="#{myController.openFacebook()}"/>

<p:tab id="googleId" closable="true" title="Google" rendered="#{myController.renderGoogleTab}"/>

<p:tab id="facebookId" closable="true" title="Facebook" rendered="#{myController.renderFacebookTab}"/>

尝试按如下方式修改代码:

openGoogle(){
 renderGoogleTab = true;
 renderFacebookTab = false;
}

openFacebook(){
 renderFacebookTab = true; 
 renderGoogleTab = false;
}

可能不是最好的方法,但一种解决方法是将选项卡放在两个单独的
tabView
组件中(据我所知,您需要能够同时打开两个选项卡),然后添加一个选项卡关闭侦听器,如中所示。然后在侦听器中,将相应的
render*选项卡
properties设置为false

因此jspx有点像这样:

<p:tabView>  
    <p:ajax event="tabClose" listener="#{myController.onGoogleClose}"/>  
    <p:tab id="googleId" closable="true" title="Google" rendered="#{myController.renderGoogleTab}"/>
</p:tabView>


<p:tabView>  
    <p:ajax event="tabClose" listener="#{myController.onFacebookClose}"/>  
    <p:tab id="facebookId" closable="true" title="Facebook" rendered="#{myController.renderFacebookTab}"/>
</p:tabView>


另一种方法是添加客户端侦听器,当用户单击“关闭”按钮时,该侦听器调用服务器端方法。

他可以同时打开所有选项卡。如果他点击谷歌,谷歌标签就会打开,如果点击facebook,另一个标签就是facebooktab就会打开。如果他关闭googletab,facebooktab将保留。你所说的两个独立的tabview组件是什么意思?
<p:tabView>  
    <p:ajax event="tabClose" listener="#{myController.onGoogleClose}"/>  
    <p:tab id="googleId" closable="true" title="Google" rendered="#{myController.renderGoogleTab}"/>
</p:tabView>


<p:tabView>  
    <p:ajax event="tabClose" listener="#{myController.onFacebookClose}"/>  
    <p:tab id="facebookId" closable="true" title="Facebook" rendered="#{myController.renderFacebookTab}"/>
</p:tabView>