spring 会话错误 [无法公开会话属性“用户”;因为存在同名的模型对象]

发布于 2024-10-14 12:06:06 字数 712 浏览 6 评论 0原文

您好,我收到以下错误

javax.servlet.ServletException: Cannot expose session attribute 'user' because of an existing model object of the same name
    org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:141)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)

代码

@Controller
@RequestMapping("/admin")
@SessionAttributes("user")
public class AdminHome {    
    @RequestMapping("home")
    public String homePage(HttpSession session, ModelMap map) {
        map.addAttribute(org.brahmaa.ads.util.impl.UserInfo.getPrincipal(session));
        return "admin/home";
    }
}

Hi i am getting following error

javax.servlet.ServletException: Cannot expose session attribute 'user' because of an existing model object of the same name
    org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:141)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)

Code

@Controller
@RequestMapping("/admin")
@SessionAttributes("user")
public class AdminHome {    
    @RequestMapping("home")
    public String homePage(HttpSession session, ModelMap map) {
        map.addAttribute(org.brahmaa.ads.util.impl.UserInfo.getPrincipal(session));
        return "admin/home";
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

潇烟暮雨 2024-10-21 12:06:07

我在 spring-boot 中使用这个属性

spring.freemarker.allow-session-override=true

I use property this in spring-boot

spring.freemarker.allow-session-override=true
计㈡愣 2024-10-21 12:06:07

据我了解, map.addAttribute(org.brahmaa.ads.util.impl.UserInfo.getPrincipal(session)); 从会话中提取 user 属性并将其放入模型中。 @SessionAttriubtes 指示 Spring 自动执行相同的操作。因此他们发生冲突。您应该只使用这些方法中的一种,而不是同时使用两种方法。

As far as I understand, map.addAttribute(org.brahmaa.ads.util.impl.UserInfo.getPrincipal(session)); extracts the user attribute from the session and puts it into model. @SessionAttriubtes instructs Spring to do the same automatically. Therefore they conflicts. You should use only one of these approaches, not both simultaneously.

Saygoodbye 2024-10-21 12:06:06

我也突然遇到了这个异常。结果我添加了这个 Freemarker 属性:

<property name="exposeSessionAttributes" value="true"/>

I suddenly got this exception as well. Turns out I had added this Freemarker property:

<property name="exposeSessionAttributes" value="true"/>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文