BSTEK Development Framework2(BDF2) : 3.10.获取登录用户信息

       对于Dorado7项目来说,可能需要在两个地方获取登录用户信息:一个是Java代码当中,另一个就是在Dorado7的View当中。我们先来看看如何在Java代码当中获取登录用户信息。

       之前的内容当中我们提到过BDF2当中的ContextHolder对象,在这个ContextHolder对象当中,提供了一系列的静态方法,通过这个方法我们可以取到当前正在使用的数据源名称(如果有设置的话),根据一个Bean的Id取到一个配置在Spring环境当中的Bean,或者取到当前登录的用户名。ContextHolder对象所包含的静态工具方法如下表所示:

方法名描述
public static String getBdfTempFileStorePath()获取BDF2系统使用的系统临时目录的绝对路径,这里获取到的值由bdf2.systemTempDir属性决定,具体参见对bdf2.systemTempDir属性描述
public static WebApplicationContext getApplicationContext()获取当前系统的Spring的WebApplicationContext对象。
public static <T> T getBean(String beanId)根据id找到指定的Spring Bean对象。
public static HttpServletRequest getRequest()获取当前线程正在使用的HttpServletRequest对象。
public static HttpServletResponse getResponse()获取当前线程正在使用的HttpServletResponse 对象。
public static HttpSession getHttpSession()获取当前用户的HttpSession 对象。
public static IUser getLoginUser()获取当前登录的用户对象,如果用户未登录,这里将返回null。
public static String getLoginUserName()获取当前登录的用户对象,如果用户未登录,这里将产生NullPointException异常,所以通常使用getLoginUser方法判断用户是否登录,而不要直接使用这个方法。

       了解了ContextHolder对象之后,您可能已经明白,在Java代码当中获取登录用户的方法就是调用ContextHolder.getLoginUser()方法,这个方法返回的是一个IUser的接口对象,这个接口我们之前有过详细的描述,通过返回的接口对象,我们可以获取当前登录用户的各种信息。

       某些时候,您可能需要在Dorado的View开发当中调用当前登录用户的信息,这个时候您可以采用BDF2当中提供的Dorado7 EL表达式来实现。BDF2当中提供了三个Dorado7 EL表达式,分别用户于获取登录用户对象信息、登录的用户的用户名以及登录时产生的错误信息,如下表所示:

EL表达式名称说明示例
loginUser返回当前登录用户对象,实际上就是调用ContextHolder.getLoginUser()方法

JS当中:var loginUsername = "${loginUser.getUsername()}";

View组件属性当中:${loginUser.getUsername()}

loginUsername返回当前登录用户的用户名

JS当中:var loginUsername = "${loginUsername}";

View组件属性当中:${loginUsername}

authenticationExceptionMessage登录时产生的错误信息

JS当中:var exceptionMsg = "${authenticationExceptionMessage}";

View组件属性当中:${authenticationExceptionMessage}