2013-07-19 4 views
0

봄 mvc를 사용 중입니다. 우리가 로그인 할 때 나는 세션 속성을 설정했다. 사용자가 로그온 할 때 검색 페이지가 하나 있습니다. 사용자에 대한 자세한 정보를 얻을 수 있습니다. 로그인이 없다면 그는 제한된 세부 정보 만 얻을 수 있습니다. 나는 로그인 양식과 사용자 검색 양식 생성시 @SessionAttributes에있는 세션 객체를 설정했습니다. 기본값이 아니라면 세션 속성의 값이 인지 확인했습니다. 내가 양식을 제출할 때하지만 오류 HTTP 상태를 보여줍니다HTTP 상태 500 - 예상 세션 속성 'userObject'

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) 

답변

2

여기서 'userObject'를 코드에 설정합니까? 나는 당신의 코드에서 보지 못했습니다. 견적 에 따라 당신이 그렇지 않으면하지 세션에서 모델에만 설정 양식 초기화이 model.addAttribute('userObject',createDefaultUserCredntials());처럼 사용할 필요가

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

이 많은 대한

6

당신이 sessionattribute로 선언했기 때문에, 당신은 컨트롤러가있을 때 세션에서 userObject로 속성을 제공 할 것으로 기대된다 호출되고있다. ModelAttribbute로 반환하면 정상적으로 작동합니다. 컨트롤러에 다음 코드를 추가하십시오.

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

    } 
+0

감사를 설정! –

+0

이 접근법으로보기 : 같은 이름의 기존 모델 객체 때문에 세션 속성 'userObject'를 노출 할 수 없습니다. – Marc

관련 문제