2013-05-20 55 views
0

有像chrome-firefox书签(称为“google”,“facebook”,“twitter”)的按钮。我想要做的是当用户点击一个按钮时,其相关的选项卡将打开。例如,如果用户点击谷歌按钮,谷歌选项卡将呈现。如何用primefaces创建类似标签的镶边

我创建了一些选项卡并绑定了这些选项卡的“呈现”属性。但问题是当我关闭标签时,我无法更改绑定到该标签的“呈现”属性的变量。例如,当我打开并关闭Google标签,然后点击打开“FacebookTab”按钮时,Google标签也会与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

尝试修改代码如下,

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

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

他可以同时打开所有标签。如果他点击谷歌,googletab将打开,如果点击Facebook,另一个是facebooktab的标签将打开。如果他关闭googletab,则facebooktab将保留。 –

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> 

另一种方法是当用户点击关闭按钮添加一个客户端监听该调用服务器侧方法。

+0

你的意思是两个独立的tabview组件? –

+0

@TurgutDsfadfa我编辑了我的答案 – dratewka

相关问题