Недавно начал изучать 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. В чём может быть проблема?