Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HTTP状态500-预期的会话属性';用户对象';_Java_Spring_Spring Mvc - Fatal编程技术网

Java HTTP状态500-预期的会话属性';用户对象';

Java HTTP状态500-预期的会话属性';用户对象';,java,spring,spring-mvc,Java,Spring,Spring Mvc,我正在使用SpringMVC。在这种情况下,我在登录时设置了session属性。当用户登录时,我有一个搜索页面 他可以获得有关用户的更多详细信息。没有登录意味着他只能获得有限的详细信息,为此我设置了 在登录表单和用户搜索表单创建中@SessionAttributes中的session对象,我检查了session属性是否有值 如果不是,则表示设置默认值。但是当我提交表单时,它会显示错误HTTP状态 500 - Expected session attribute @RequestMappi

我正在使用SpringMVC。在这种情况下,我在登录时设置了session属性。当用户登录时,我有一个搜索页面 他可以获得有关用户的更多详细信息。没有登录意味着他只能获得有限的详细信息,为此我设置了 在登录表单和用户搜索表单创建中@SessionAttributes中的session对象,我检查了session属性是否有值 如果不是,则表示设置默认值。但是当我提交表单时,它会显示错误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)

由于您已声明为sessionattribute,因此在调用控制器时,您需要在会话中提供userObject属性。将其作为ModelAttribbute返回,它将正常工作。将以下代码添加到控制器

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

    }

由于您已声明为sessionattribute,因此在调用控制器时,您需要在会话中提供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',createDefaultUserCredNatials())否则它只在模型中设置,而不在会话中设置

在代码中设置“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',createDefaultUserCredNatials())否则它只在模型中设置,不在会话中

非常感谢!通过这种方法可以看到这一点:无法公开会话属性“userObject”,因为存在同名的模型对象。非常感谢!通过这种方法可以看到这一点:无法公开会话属性“userObject”,因为存在同名的模型对象