0

私は春が初めてです。次のように動作する MVC アプリケーションに取り組んでいます。

1) ユーザーは、何らかのサービスへの接続を作成するために必要なデータをフォームに入力します。

2) コントローラーは入力からデータを取得し、新しいオブジェクト serviceManager を作成し、このオブジェクトを serviceId を持つ HashMap に保存します。

3) ユーザーが次にこのサービスを使用する場合、serviceId を使用するコントローラーは HashMap からデータを読み取ります。

したがって、この HashMap をセッション全体でコントローラーに保存して、将来使用できるようにする必要があります。それを達成するための最良の方法は何ですか?毎回 serviceManager オブジェクトを作成し、データベースからデータを読み取ることが適切な解決策でしょうか? 私のコントローラーでは、目的を完全に果たす @Autowired フィールドを既に使用していますが、それらはSpring xmlで定義されており、データを動的に保存する必要があります。

4

2 に答える 2

0

あなたの要件は、セッションにメインデータを保持し、毎回クライアントから詳細データを取得し、2種類のデータを組み合わせてデータベースから何かを取得する必要がある私のものと同じようです。主要部分のデータをセッションに入れ、それを取得できるセッション全体に入れるだけです。私も @SessionAttribute を使用しようとしていますが、何十回も試した後、あきらめました。多くの問題があります。可能であれば、データをセッションに保存することをお勧めします。これが最も良い方法です。

于 2013-03-24T11:53:00.163 に答える
-1

私は自分自身を春にするのは初心者ですが、これをセッションに入れる限り:

@Controller
@SessionAttributes({"myObject"})
public class MyController() {
...
    @RequestMapping(value="/foo")
// Corrected as per Costi below
//    public String someMethod(@PathVariable MyObject myObject) {
    public String someMethod(@ModelAttribute MyObject myObject) {
    ...
    }
}

@SessionAttributes は、myObject という名前の MyObject をセッションに配置します (まだ存在しない場合)。 @PathVariable はそれをプルダウンして、メソッドで使用できるようにします。

セッション属性のカーリーは、1 つの属性だけに必要なわけではありませんが、配列表記 (つまり、カーリー) を使用する場合は、カンマ区切りで複数指定できます。

于 2013-03-23T23:55:54.207 に答える