簡體   English   中英

HTTP狀態500-預期的會話屬性'userObject'

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM