2009-12-06 13 views
5

要求間のバネで状態を維持する私の質問です:私は間で状態を共有しない方法春のリクエスト? ModelMapを使用してコントローラからビューにデータを送信できますが、ModelMapのデータはビューによって次のコントローラに返されません。 これを春にするにはどうすればいいですか?私はとても残念春に新しいです

以下は私のソースコードの一部です。 2番目のコントローラでは、modelMapには、最初のコントローラのmodelMapに格納されているデータは含まれていません。 春にコントローラ間の状態をどうやって維持するのですか?

ありがとうございました。

@RequestMapping(value = "find/something", method = RequestMethod.GET) 
public String foo(@RequestParam("parent") Parent parent, ModelMap modelMap) {  
... 
    modelMap.addAttribute("question_index", 42); 
    modelMap.addAttribute("something", new Something()); 
    modelMap.addAttribute("data", new Data()); 
    return "some/view"; 
} 

<form:form action="bla" method="POST" modelAttribute="data"> 
...// using Something() and 42 
</form:form> 

@RequestMapping(value = "bla", method = RequestMethod.POST)  
public String bla(@ModelAttribute("data") Data data, BindingResult result, ModelMap modelMap) { 
System.out.println(modelMap); // doesn't contain question_index, or something 
} 

答えて

0

一般的に(そしてSpringを使用しない場合)、そのようなデータはサーブレットセッションに入ります。

+0

かステートフルEJBに。 – duffymo

+0

ステートフルなEJBはどのようにWebアプリケーションと連携しますか? – Bozho

6

HttpSessionにmodelMapを入れてもよいし、(より大きいアプリケーションの方が望ましい)どちらでも、会話ができるSpring web flowを使用することができます。

+0

コントローラのHttpSessionにアクセスするにはどうすればよいですか? (私はサーブレットに精通していますが、スプリングはありません) – Karl

+0

http://static.springsource.org/spring/docs/2.5.6/reference/mvc.htmlを見てください。13.11.4 – Bozho

+0

[this](https ://stackoverflow.com/q/48355807/3425489)シナリオ?私の検索条件は、例えば、 –

4

これをSpringで行う最もクリーンな方法は、セッションスコープのSpring Beanです。 Beanのインスタンスはセッションにプライベートになり、各セッションの開始時にSpringによってインスタンス化され、管理されます。このBeanは会話状態を保持できます。

このメカニズムでは、標準のHttpSession属性を使用していますが、コードはHttpSessionを直接処理する必要がないので、全体的にはよりクリーンです。

設定と使用方法については、relevant part of the Spring docs(およびhere)を参照してください。

-1

自分でやってください。ご提案のための

<form:form action="bla" method="POST" modelAttribute="data"> 
    <input type="hidden" name="data" value="${data}"/> 
</form:form> 
1

おかげで多くのことを、私はセッション-attibutesとしてModelMapのキーをタグ付けすることによってそれを解決:

@SessionAttributes({ "question_index", "something" }) 
@Controller 
public class MyController{ 
... 
} 
+0

後続のリクエストでこれらの属性にどのようにアクセスしましたか。 –

関連する問題