Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTTP Status 500 - Expected session attribute 'userObject'

I am using spring mvc. in that i set the session attribute when we login. I have one search page when the user is logined he can get more details about the user. without login means he can get only limited details for that purpose i set the session object in @SessionAttributes in the login form and in the user search form creation i checked that the session attribute has value if not means set the default value. but when i submit the form it shows error HTTP Status

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) {
       .... 
    ....
    } 

error is

   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)
like image 661
jackyesind Avatar asked Mar 09 '26 17:03

jackyesind


2 Answers

Because you have declared as a sessionattribute, you are expected to provide a userObject attribute in the session when the controller is being invoked. Return it as a ModelAttribbute and it will work fine. Add the following code to your controller

@ModelAttribute("userObject")
    public UserObject getUserObject() {
        return new UserObject();

    }
like image 59
ArunM Avatar answered Mar 12 '26 05:03

ArunM


Where do you set the 'userObject' in your code. I did not see in your code. As per your quote you set in the form initialization

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

you have to use like this model.addAttribute('userObject',createDefaultUserCredntials()); otherwise it sets only in model not in session

like image 31
muthu Avatar answered Mar 12 '26 07:03

muthu



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!