@nkalughniy

JSF: почему свойство rendered не работает для h:outputText?

Недавно начал изучать JEE. Использую JSF2.2, EJB3, Glassfish 4.1, Hibernate 4.3. Долго страдал с JAAS, но в итоге смог его настроить. Имеется ManagedBean, который содержит текущую сессию пользователя:
@ManagedBean
@SessionScoped
public class Auth implements Serializable {
    
    private Users user; 

    @EJB private UsersFacade userService;

    public Users getUser() {
        if (user == null) {
            Principal principal = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
            if (principal != null) {
                user = userService.findByUsername(principal.getName()); 
            }
        }
        return user;
    }
    public void setUser(Users user) {
        this.user = user;
    }
}

После авторизации JAAS перехожу на index.xhtml:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
      xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
    <h:head>
        <title>Insurance App</title>
    </h:head>
    <h:body>
        <h1>Welcome to Insurance Web App!</h1>
        <h3>
            <h:outputText rendered='#{auth.user == null}'>
                <h:link outcome="login.xhtml">Login</h:link> to start work!
            </h:outputText>
            <h:outputText rendered='#{auth.user.username == "admin"}'>
                Welcome <h:outputText value="#{auth.user.username}"/>! Here your <h:link outcome="/admin/cabinet.xhtml">Cabinet</h:link> to start work!
            </h:outputText>
            <h:outputText rendered='#{auth.user.username != "admin"}'>
                Welcome <h:outputText value="#{auth.user.username}"/>! Here your <h:link outcome="/users/cabinet.xhtml">Cabinet</h:link> to start work!
            </h:outputText>
        </h3>
    </h:body>
</html>

Итак, проблема: не отображается всё, что имеет атрибут rendered. В чём может быть проблема?
  • Вопрос задан
  • 545 просмотров
Пригласить эксперта
Ответы на вопрос 1
AxianLTD
@AxianLTD
Видимо auth.user != null и как результат "rendered=false" ;-)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы