![](/img/trans.png)
[英]SpringMVC using @ExceptionHandler HTTP Status 500 - Expected session attribute
[英]HTTP Status 500 - Expected session attribute 'userObject'
我正在使用Spring MVC。 在那我登錄時設置會話屬性。 當用戶登錄時,我只有一個搜索頁面,他可以獲得有關該用戶的更多詳細信息。 如果沒有登錄,則表示他只能為此目的獲取有限的詳細信息。我在登錄表單的@SessionAttributes中設置了會話對象,在用戶搜索表單創建中,我檢查了會話屬性是否具有值(如果不是,則意味着設置了默認值)。 但是當我提交表單時,它顯示錯誤的HTTP狀態
500 - Expected session attribute
@RequestMapping(value = "/user-search", method = RequestMethod.GET)
public String initUserSearchForm(Model model) {
User user = new User();
model.addAttribute("User", user);
if(!model.containsAttribute("userObject"))
model.addAttribute(createDefaultUserCredntials());
return "user";
}
@RequestMapping(value = "/user-byName", method = RequestMethod.GET)
public
@ResponseBody
String getUserByName(HttpServletRequest request,@ModelAttribute("userObject")User user) {
....
....
}
錯誤是
org.springframework.web.HttpSessionRequiredException: Expected session attribute 'userObject'
org.springframework.web.method.annotation.ModelFactory.initModel(ModelFactory.java:103)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:723)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:687)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:811)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
因為已聲明為session屬性,所以在調用控制器時,應在會話中提供userObject屬性。 將其作為ModelAttribbute返回,它將正常工作。 將以下代碼添加到您的控制器
@ModelAttribute("userObject")
public UserObject getUserObject() {
return new UserObject();
}
您在代碼中的哪里設置“ userObject”。 我沒有在您的代碼中看到。 根據您的報價,您在表單初始化中進行設置
@RequestMapping(value = "/user-search", method = RequestMethod.GET)
public String initUserSearchForm(Model model) {
User user = new User();
model.addAttribute("User", user);
if(!model.containsAttribute("userObject"))
model.addAttribute('userObject',createDefaultUserCredntials());
return "user";
}
您必須像這樣使用model.addAttribute('userObject',createDefaultUserCredntials());
否則,它僅在模型中設置而不在會話中設置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.