您好我得到以下错误
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";
}
}
答案 0 :(得分:3)
我突然也遇到了这个例外。事实证明我添加了这个Freemarker属性:
<property name="exposeSessionAttributes" value="true"/>
答案 1 :(得分:1)
据我所知,map.addAttribute(org.brahmaa.ads.util.impl.UserInfo.getPrincipal(session));
从会话中提取user
属性并将其放入模型中。 @SessionAttriubtes
指示Spring自动执行相同操作。因此他们发生冲突您应该只使用其中一种方法,而不是同时使用这两种方法。
答案 2 :(得分:0)
我在spring-boot中使用此属性
spring.freemarker.allow-session-override=true