Отображение электронной почты пользователей при входе в систему (JSF 2.0)

#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’. Затем добавьте поле email , а также средство получения и заполните поле при входе в систему.

2. Это работает хорошо, извините, я запутался, для этого мне не нужен управляемый компонент, это ключ, хранящийся в сеансе, который я вызываю 🙂 Я использовал второй подход, нет необходимости в управляемом компоненте.