2012-07-09 156 views
0

我有幾個面板組,其中一個具有「註冊」和「登錄」鏈接,另一個具有「註銷」。當我登錄時,只有「登錄」鏈接消失,「註冊」保持呈現狀態,「註銷」永遠不會呈現。 #{user.loggedIn}「在用戶登錄時返回true。當在調試模式下刷新屏幕時,我可以看到該方法正在運行。有關如何使其正確工作的任何建議。代碼應該是說明性的,請讓我知道,如果它不是。JSF呈現屬性

<h:panelGroup rendered="#{!user.loggedIn}"> 
    <li> 
    <h:outputLink id="loginLink" value="javascript:void(0)" onclick="dlg.show()" title="login" styleClass="loginpanelclass">Log In</h:outputLink> 
    </li> 
    <li> 
    <h:link value="Register" outcome="/registration/register.xhtml" /> 
    </li> 
</h:panelGroup> 

<h:panelGroup rendered="#{user.loggedIn}"> 
    <li> 
    <h:commandLink action="#{user.logout()}">Logout</h:commandLink> 
    </li> 
</h:panelGroup> 
+0

一般來說,爲了更新未呈現的元素,您必須更新始終呈現的包裝器,這可能對您有所幫助http://stackoverflow.com/a/10370268/617373 – Daniel 2012-07-09 06:28:31

+0

我在想這個可能是問題。我會在鏈接中研究解決方案,看看我能做些什麼。此外,專家小組並非表格,這是一個問題嗎? – BillR 2012-07-09 12:39:00

+0

@Daniel只是好奇,因爲這不是一種形式,我是否將ajax標籤包含在面板組或外部......或者在哪裏?還是它必須在一個形式? – BillR 2012-07-09 13:05:33

回答

0

要引用的元素必須在一個命名容器,如果它們不在您從引用他們同樣的命名容器。對我來說,我啓動當我點擊第一個鏈接時,使用primefaces的登錄對話框,在對話框裏面是一個表單,當這個表單完成時,它告訴我上面問題中的面板是否使用p:dialog update屬性來呈現或者不使用。把我的問題的面板放在命名容器中,然後使用':'nota成功引用它們通過層次結構。

如果有人無法在JSF中查找組件層次結構和命名容器的文章。有了丹尼爾在他上面的評論中給出的提示,以及我發現在層次結構和命名容器中看到的東西,我現在認爲這一點足夠好。還有一些不確定性,但我的代碼做了我現在想做的事情。 :)我正在標記丹尼爾在他的相關問題中給出的答案。