2

私は春のmvcを使用しています。その中で、ログイン時にセッション属性を設定しました。ユーザーがログインすると、ユーザーに関する詳細を取得できる検索ページが 1 つあります。ログインしないと、その目的のために限られた詳細しか取得できないことを意味します。ログインフォームの @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)
4

2 に答える 2

2

コードのどこに「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());そうしないと、セッションではなくモデルでのみ設定されます

于 2013-07-19T05:02:15.140 に答える