0

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

我创建了一些选项卡并绑定了这些选项卡的“渲染”属性。但问题是当我关闭选项卡时,我无法更改绑定到选项卡“渲染”属性的变量。例如,当我打开和关闭 google 选项卡,然后单击以打开 FacebookTab 按钮时,Google 选项卡也与 Facebook 选项卡一起呈现,因为 renderGoogleTab 仍然成立。

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

我的观点;

<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
}
4

2 回答 2

0

尝试如下修改您的代码,

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

openFacebook(){
 renderFacebookTab = true; 
 renderGoogleTab = false;
}
于 2013-05-20T10:01:30.563 回答
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>

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

于 2013-05-20T10:27:57.237 回答