有像chrome-firefox书签这样的按钮(比如“google”,“facebook”,“twitter”)。我想要做的是当用户点击按钮时,其相关选项卡将打开。例如,如果用户点击谷歌按钮,则会呈现谷歌选项卡。
我创建了一些标签并绑定了这些标签的“呈现”属性。但问题是当我关闭标签时,我无法更改绑定到标签的“呈现”属性的变量。例如,当我打开并关闭谷歌标签然后点击打开Facebook的标签按钮时,谷歌标签也会使用Facebook标签呈现,因为renderGoogleTab仍然适用。
我必须以编程方式创建标签和tabview,还是有一个简单的解决方案?
我的观点;
<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}"/>
我的控制器;
@Controller("myController")
@Scope("view")
public class MyController{
//some variables
openGoogle(){
renderGoogleTab = true;
}
openFacebook(){
renderFacebookTab = true;
}
//getter and setters
}
答案 0 :(得分:0)
尝试修改您的代码,如下所示
openGoogle(){
renderGoogleTab = true;
renderFacebookTab = false;
}
openFacebook(){
renderFacebookTab = true;
renderGoogleTab = false;
}
答案 1 :(得分:0)
可能不是最好的方法,但一种解决方法是将选项卡放在两个单独的tabView
组件中(据我所知,您需要能够同时打开两个选项卡),然后添加一个标签关闭监听器,如showcase。然后在侦听器中将相应的render*Tab
属性设置为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>
另一种方法是添加一个客户端侦听器,当用户单击关闭按钮时,该侦听器将调用服务器端方法。