【问题标题】:To get username in all the session在所有会话中获取用户名
【发布时间】:2013-12-24 19:42:36
【问题描述】:

我想做,很简单,但结果不是我想要的。

我想在用户登录时在所有应用程序中显示用户名,但我在第一页显示用户名。

我的代码是:

控制器

...    
@SessionAttributes("username")
public class InitController
{
@RequestMapping(.. RequestMethod.GET)
public String request (ModelMap model, HttpServletRequest request)
{
   ...
   //model.addAttribute ("username", name);
   request.setAttribute("username", name);
   ...
   return "pageToShow";


 }
}

页面.jsp

<header>
    <div id="divHeader">
        <h1><fmt:message key="page.header"/></h1>
        <div class="divUser">
            <a href="direction?id=${username}" >${username}</a>
        </div>
    </div>
</header>

.jsp 页面始终存在,因为它是页眉

谢谢。

【问题讨论】:

  • 请记住@SessionAttributes("username") 的范围将仅保留在该 InitController Clazz 中。如果您的请求是从另一个控制器而不是 InitController 发出的,它将不可用。

标签: spring jsp session spring-mvc


【解决方案1】:

替换

request.setAttribute("username", name);

model.addAttribute ("username", name);

替换

<a href="direction?id=${username}" >${username}</a>

<a href="direction?id=${sessionScope.username}" >${sessionScope.username}</a>

当您使用${username} 时,您会打印username MVC 模型属性,该属性仅存在到当前请求结束。 ${sessionScope.username} 将从会话属性中获取 username 属性,该属性由您的 @SessionAttributes("username") 注释保存。

【讨论】:

  • 感谢您的回答。我试过了,现在它什么都没有画,第一页和其余的都没有
  • 我没有注意到该行已被注释掉。我更新了答案。
  • 还有其他方法可以在会话属性中设置值。例如,您可以这样做:request.getSession().setAttribute("username", username) 并删除 @SessionAttributes("username")
  • 完美!!非常感谢。这已经解决了!! ;)
猜你喜欢
  • 2011-11-15
  • 2019-08-26
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
  • 1970-01-01
相关资源
最近更新 更多