2016-06-20 13 views
0

'isAdmin'値が変更された後にprimefacesコンポーネントを更新しようとしています。私は、次のHTMLページを使用していますPrimefacesコンポーネントがRequestContextを使用して更新しません

<h:form id="form"> 
    <p:tabView id="tabs"> 
     ... 
     <p:tab title="Admin" rendered="#{userSession.isAdmin}"> 
     ... 
     </p:tab> 
    </p:tabView> 
</h:form> 

マイUserSessionクラス:

@ManagedBean(name="userSession") 
@SessionScoped 

public class UserSession { 
    . 
    . 
    . 
    public boolean isAdmin; 

    public UserSession() { 
     isAdmin = false; 
    } 

    public void addRole(String role) { 
     if (role.equals("ADMIN") { 
      this.isAdmin = true; 
     } 

     role.add(role) 
    } 
} 

addRole()メソッドが呼び出されると役割 "ADMIN" を追加します。私はこれが良いことではないことを知っていますが、私はその時点でテスト目的でしか使用していません。

その後、私はログインを処理し、addRole()メソッドが呼び出されるクラスの下で、私が使用してコンポーネントを更新しようとしています:

RequestContext.getCurrentInstance().update("form"); 

私はこの信じているように私は、フォームを更新しようとしていますDOMでは常に表示されますか?

私の問題は、これは単に動作しておらず、何も更新されていないということです。

ご協力いただきまして誠にありがとうございます。

答えて

0

実際のセッションBean自体ではなく、私が実際にUserSessionオブジェクトを変更していることが分かりました。

したがって、私は次のようやったとだけではなく、私の豆を指摘:

// Previously 
// UserSession us = new UserSession(); 
UserSession us = (UserSession) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("userSession"); 
関連する問題