#java #jsf #jakarta-ee #jsf-2 #java-ee-6
#java #jsf #джакарта-ee #jsf-2 #java-ee-6
Вопрос:
В моем веб-приложении есть шаблон, который используется на всех страницах. Я хочу создать небольшую метку в этом шаблоне (чтобы она была видна везде) для отображения электронной почты пользователя, если он в данный момент вошел в систему.
Я думаю, что лучший способ — напрямую посмотреть, существует ли она в сеансе, поэтому вот как я создал ярлык:
<h:outputLabel id="usernameLabel"
value="#{FacesContext.getCurrentInstance().getExternalContext()
.getSessionMap().get("userRole")}" />
Код синтаксически некорректен. Как я могу написать это соответствующим образом для достижения моей цели? Считаете ли вы, что этот подход правильный?
Ответ №1:
Лучшим подходом было бы сохранить UserBean в сеансе, содержащем информацию о пользователе.
и затем
#{userBean.email}
Или вы можете напрямую приписать из сеанса, используя jsp el
${userRole}
Я бы предпочел первый подход
Обновить
После успешного входа в систему установите часто требуемый параметр в ManagedBean, например
@ManagedBean
@SessionScoped
public class CurrentUserInfo{
private String userName;
private String firstName;
private String lastName;
//and some other like DOB and etc..
// accessor methods
}
Это было бы доступно через сеанс
Комментарии:
1. Создайте компонент в области сеанса и присвоите ему имя ‘UserBean’. Затем добавьте поле
2. Это работает хорошо, извините, я запутался, для этого мне не нужен управляемый компонент, это ключ, хранящийся в сеансе, который я вызываю 🙂 Я использовал второй подход, нет необходимости в управляемом компоненте.