2013-05-20 52 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