JSP页面中的会话bean

时间:2016-11-01 10:45:02

标签: java jsp spring-mvc jstl el

我将用户信息存储到会话bean中,如下所示:

@Component
@Scope( value="session" , proxyMode = ScopedProxyMode.TARGET_CLASS )
public class UserInfos {

    public List<Integer> roles;
    public Integer idUser;


    public List<Integer> getRoles() {
        return roles;
    }
    public void setRoles(List<Integer> roles) {
        this.roles = roles;
    }
    public Integer getIdUser() {
        return idUser;
    }
    public void setIdUser(Integer idUser) {
        this.idUser = idUser;
    }


}

在我的控制器中,我将bean作为属性放在会话中:

@Controller
public class FooController {

    @Autowired
    private UserInfos userInfos;

    @RequestMapping(value="/foo/login") 
    public String  login_foo(HttpServletRequest request){
        ....
        userInfos.idUser = ...
        userInfos.roles  = ...

        request.getSession().setAttribute( "userInfos", userInfos );
        ....
    }
}

但是,当我尝试在jsp页面中使用它时,${ sessionScope.userInfos.idUser }的值始终为null

当我尝试

(${ sessionScope.userInfos }) - (${ sessionScope.userInfos.idUser })

我明白了:

(beans.UserInfos@445541fc) - ()

那么如何在JSP页面中使用会话bean的属性呢?

因为当我在我的控制器中调试时,userInfos.idUser的值不为空或空。

1 个答案:

答案 0 :(得分:0)

我们通过替换:

来解决它
    userInfos.idUser = ...
    userInfos.roles  = ...

通过:

    userInfos.setIdUser( ... );
    userInfos.setRoles( ... ); 

如果有人能解释我为什么设置属性,那将非常有用。