有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

spring会话出现java错误[无法公开会话属性'user',因为存在同名的模型对象]

嗨,我得到以下错误

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";
    }
}

共 (3) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    我在spring boot中使用此属性

    spring.freemarker.allow-session-override=true
    
  3. # 3 楼答案

    我突然也遇到了这个例外。原来我添加了这个Freemarker属性:

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