2010-12-01 12 views
0

Imは現在、spring mvc、java、注釈を使用しています。リダイレクトビューからオブジェクトを取得する方法は?

@RequestMapping(value = "/submitTask", method = RequestMethod.POST) 
public ModelAndView submitTask(HttpSession session, HttpServletRequest request) { 
     Map<String, Object> map = new HashMap<String, Object>(); 
     ModelAndView model = new ModelAndView(new RedirectView("home.html")); 
     map.put("email", request.getParameter("email")); 
     map.put("task",request.getParameter("task")); 
     map.put("error", request.getParameter("error")); 
     model.addObject("map", map); 
     return model; 
} 

@RequestMapping("/home") 
public ModelAndView home(HttpSession session, HttpServletRequest request) { 
    ModelAndView model = new ModelAndView("home"); 
    model.addObject("map", request.getParameter("map")); 
    return model; 
} 

私はhome.htmlに私の見解をリダイレクトするとき、私は「request.getParameter(」マップ「)」を介して「マップ」の値を取得していないようです。どのように私はそれを取得することができます。ありがとう

+0

submitTaskメソッドでは、セッションにオブジェクトを設定するのを忘れたと思います。 session.setAttribute( "map"、map); –

+0

これは不完全な質問です。どのようにリクエストしているか教えてください。 URLとは何ですか?そしてそのようなもの。 –

+0

imはsubmitTask.htmlにありますので、submitTaskメソッド – randy

答えて

1

「home」メソッドに渡されたHttpServletRequestリクエストに、「map.email」、「map.task」、「map.error」というパラメータが含まれていますが、「map」は含まれていないことが問題です。

+0

にありますので、request.getParameter( "map.task")を使用してそれを取得すると、それはどういう意味ですか? – randy

+0

私はこれを試してみます。 – Ralph

+0

残念ながら、それは動作しません。 – randy

1

RedirectViewを使用すると、ブラウザは新しい要求を発行するので、元の要求は失われます。

フラッシュ範囲や会話範囲のようなものが必要です。私はこれらの実装についてはわかりませんが、check the google resultsです。

Spring Webflowを使用すると会話を処理できますが、単純な作業では複雑すぎます。すぐにセッションを使用することができます回避策として

、その後、明確なことは(フラッシュスコープはどうなるのか、本質的である)

0

変更

new RedirectView("home.html") 

"forward:home.html" 

へリダイレクトは、クライアントの側から新しい要求が生成されるため、セッション属性またはBeanが存在しない限り、サーバー側のすべてのデータを削除します。 転送は、すべてを別の「メソッド」に転送します。要求の属性は変更されないため、アクセス可能になります。

関連する問題