私は春の注釈ベースのコントローラを使用しています。私はURL /ユーザー/メッセージをクエリパラメータタグが存在する場合にはコントローラAにマッピングする必要があります。これは、パラメータタグが存在するときに、実装をきれいに保つために、別のコントローラで処理したいパラメータとともにいくつかのパラメータが存在する可能性があるため必要です。これを春に行う方法はありますか。また、この問題に対する他のエレガントな解決方法もありますか?クエリパラメータに基づいて、春に異なるコントローラに同じURLをマッピングします。
5
A
答えて
3
Springルートに行きたい場合は、hereというHandlerInterceptorをチェックアウトすることができます。インターセプタは、クエリパラメータを見て、別のSimpleUrlMapperで捕捉できるものにリンクをリダイレクトすることができます。
もう1つの方法は、単一のコントローラに送信し、クエリパラメータが "b"の場合にコントローラを別のアクションに転送させることです。
5
@RequestMapping
注釈のparams
属性を使用して、HTTPパラメータに応じてコントローラメソッドを選択できます。
は、この例を参照してください:春ROOが使用するように
@RequestMapping(params = "form", method = RequestMethod.GET)
public ModelAndView createForm() {
...
}
@RequestMapping(method = RequestMethod.GET)
public ModelAndView list() {
...
}
これは、RESTスタイルです:リクエストパラメータforms
が含まれている場合ではないlist
方法が使用されているならば、createForm
ハンドラが、使用されています。
+0
良い、それを後で試してみるだろう... @RequestParam(値= "タグ"、必須= false) 「タグ」パラメータのヌル値をチェックする – r15habh
関連する問題
- 1. 同じURLを別のメソッドに春にリクエストボディに基づいてマッピングする
- 2. route:nameに基づく異なるコントローラ
- 3. 同じコードで異なるパッケージ名に基づいて2つのアプリケーションをリリース
- 4. 春同じURLですがパラメータのタイプが異なる
- 5. Railsで同じURLフォーマットの異なるコントローラにルーティングするにはどうしたらいいですか?
- 6. 同じプロジェクトでログインしていて、URLに基づいてログインしていませんか?
- 7. 他の列に基づいて同じ行を更新する
- 8. チェックボックスに基づいて異なるテーブルに同じデータを挿入する方法は? MySQLのPHP
- 9. 春のセキュリティの役割に基づいてターゲットURLを決定する3.1
- 10. SQL同じデータを表示するが、同じビュー内の異なる日付に基づくクエリ
- 11. 同じ行の値に基づいて値を見つける
- 12. ララベルシングルルートは、ナメクジに応じて異なるコントローラを指します
- 13. 春のアノテーションに基づくランタイムウィーバーのエラーは、動的なWebプロジェクトに基づいています。
- 14. 異なるキーをC++の同じ値にマッピング
- 15. ユーザーログインレベルに基づいて異なるページにリダイレクトするPHPログインページ
- 16. オリエンテーションに基づいて異なる機能を提供していますか?
- 17. AUTOMAPPERで異なるアセンブリの同じ基本クラスを持つエンティティをマッピングする
- 18. mySQL:複数のCOUNT()の異なる基準に基づいて
- 19. wicket:マークアップで異なるコンテンツを生成するリクエストで同じクラスに異なるパスをマッピングします
- 20. UI-Routerで異なるパラメータで同じコントローラに移動する
- 21. 同じIDに基づいて2つのテーブルフィールドを結合しますか?
- 22. フレンドリーなURLはディレクトリに基づいていますか?
- 23. デバイスタイプに基づいて異なるストーリーボードを選択する
- 24. ビルドOSに基づいて異なるファイルを展開する
- 25. 同じ列に基づく結合
- 26. プロパティに基づいて同一モジュールの異なる重大度をチェックスタイル
- 27. 入力に基づいて異なるタイプを返す関数
- 28. Mercurial Changegroupフックはブランチに基づいて異なります
- 29. struts2のロールに基づいてターゲットURLを決定します。
- 30. jQueryはページURLに基づいてクラスを追加します
HandlerInterceptorはクールに聞こえますが、当面は第2のアプローチをとると思います。いくつかのパラメータが存在するかどうかを知っていれば、コントローラにチェックを入れる必要があります。だから、if(tag == someValue)なら、xをやるでしょうが、 'tag'という名前のパラメータがない場合には、それをどのように処理するのでしょうか? – r15habh
@kcr:私が質問を理解しているかどうかは分かりませんが、コントローラ内でHttpServletRequestを使用してgetParameterMapを呼び出すと、現在のリクエストのキーと値のマップが得られます。マップを照会して、パラメーターが存在するかどうかを調べることができます。 – rajasaur
私の悪い、間違った方向に考えていた:) – r15habh