Jsf 如何使用primefaces创建类似chrome的选项卡
还有像chrome firefox书签这样的按钮(比如“google”、“facebook”、“twitter”)。我想做的是,当用户单击一个按钮时,它的相关选项卡将打开。例如,如果用户单击google按钮,则会呈现google选项卡 我已经创建了一些选项卡并绑定了这些选项卡的“渲染”属性。但问题是,当我关闭选项卡时,我无法更改绑定到选项卡“rendered”属性的变量。例如,当我打开并关闭google选项卡,然后单击openFacebookTab按钮时,google选项卡也会与Facebook选项卡一起呈现,因为RenderGogleTab仍然保持为true 我必须以编程方式创建选项卡和选项卡视图,还是有一个简单的解决方案 我的观点Jsf 如何使用primefaces创建类似chrome的选项卡,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,还有像chrome firefox书签这样的按钮(比如“google”、“facebook”、“twitter”)。我想做的是,当用户单击一个按钮时,它的相关选项卡将打开。例如,如果用户单击google按钮,则会呈现google选项卡 我已经创建了一些选项卡并绑定了这些选项卡的“渲染”属性。但问题是,当我关闭选项卡时,我无法更改绑定到选项卡“rendered”属性的变量。例如,当我打开并关闭google选项卡,然后单击openFacebookTab按钮时,google选项卡也会与Facebook
<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>