java - HTTP 状态 500 - 预期 session 属性 'userObject'

标签 java spring spring-mvc

我正在使用 spring mvc。因为我在登录时设置了 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)

最佳答案

因为您已声明为 session 属性,所以当调用 Controller 时,您需要在 session 中提供 userObject 属性。将其作为 ModelAttribute 返回,它将正常工作。将以下代码添加到您的 Controller

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

    }

关于java - HTTP 状态 500 - 预期 session 属性 'userObject',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17737913/

相关文章:

java - 如果我有 pid,是否可以创建 Process 类的实例? java

java - 忽略 Thymeleaf 中 href 中的空参数

spring - apache httpclient clientprotocol classnotfoundexception与程序args时

java - Spring Boot webflux 仅返回 401 和 403

java - 在另一个 Web 应用程序中重用 DAO

java - "Pivot"使用 Hadoop 的表

java - 将字节数组 block 转换为 DWORD (int) Java

java - 请求的资源不可用。在 eclipse 上使用 tomcat 运行 spring mvc 程序

java - Weblogic 还是 JBoss?

java - Spring 批处理 : NotSerializableException