登录时显示用户的电子邮件(JSF 2.0)

sfr*_*frj 0 java jsf java-ee java-ee-6 jsf-2

我的网络应用程序有一个在所有页面中使用的模板.我想在该模板中创建一个小标签(因此它随处可见),以显示用户当前登录的电子邮件.

我认为最好的方法是直接查看它是否存在于会话中,所以这就是我创建标签的方式:

<h:outputLabel id="usernameLabel"
               value="#{FacesContext.getCurrentInstance().getExternalContext()
                      .getSessionMap().get("userRole")}" />
Run Code Online (Sandbox Code Playgroud)

代码在语法上不正确.如何以适当的方式编写它以实现我的目标?你认为这种方法是否正确?

Jig*_*shi 5

更好的方法是将userBean存储在包含用户信息的会话中.

然后

#{userBean.email}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用jsp el直接从会话归属

${userRole}
Run Code Online (Sandbox Code Playgroud)

我更喜欢第一种方法

更新

成功登录后,例如在ManagedBean中设置经常需要的

@ManagedBean
@SessionScoped
public class CurrentUserInfo{
  private String userName;
  private String firstName;
  private String lastName;
  //and some other like DOB and etc..
  //+accessor methods 
}
Run Code Online (Sandbox Code Playgroud)

这将是活着的,并可通过会议访问