2016-06-20 2 views
0

Я пытаюсь обновить компонент primefaces после изменения значения isAdmin.Приоритет Компонент, не обновляющийся с использованием RequestContext

Я использую следующий HTML страницу:

<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

Я выяснил, что я всегда менял свой объект UserSession вместо фактического самого сеансового компонента.

Поэтому я сделал следующее, и только указал на мой боб вместо:

// Previously 
// UserSession us = new UserSession(); 
UserSession us = (UserSession) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("userSession"); 
Смежные вопросы