SpringでGETとPOSTのリクエストメソッドを組み合わせる
2023-09-18 02:18:39
質問
リソースが
GET
と
POST
のリクエストに対応します。以下は、サンプルリソースのサンプルコードです。
@RequestMapping(value = "/books", method = RequestMethod.GET)
public ModelAndView listBooks(@ModelAttribute("booksFilter") BooksFilter filter, two @RequestParam parameters, HttpServletRequest request)
throws ParseException {
LONG CODE
}
@RequestMapping(value = "/books", method = RequestMethod.POST)
public ModelAndView listBooksPOST(@ModelAttribute("booksFilter") BooksFilter filter, BindingResult result)
throws ParseException {
SAME LONG CODE with a minor difference
}
2つのメソッドのコードは、例えば変数の定義を除けば実質的に同じです。2つのメソッドを簡単に組み合わせるには
method = {RequestMethod.POST, RequestMethod.GET}
を使って簡単に組み合わせることができます。
if
の内側で実行します。試してみましたが、うまくいきません。2つのメソッドは最後に異なるパラメータを持つからです、つまり
HttpServletRequest
と
BindingResult
(その
@RequestParam
は必須ではありませんので
POST
のリクエストには必要ありません)。2つのメソッドを組み合わせる方法について何かアイデアはありますか?
どのように解決するのですか?
@RequestMapping(value = "/testonly", method = { RequestMethod.GET, RequestMethod.POST })
public ModelAndView listBooksPOST(@ModelAttribute("booksFilter") BooksFilter filter,
@RequestParam(required = false) String parameter1,
@RequestParam(required = false) String parameter2,
BindingResult result, HttpServletRequest request)
throws ParseException {
LONG CODE and SAME LONG CODE with a minor difference
}
もし
@RequestParam(required = true)
の場合、パラメータ1、パラメータ2を渡す必要があります。
BindingResultを使って、条件に応じてリクエストしてください。
その他の方法
@RequestMapping(value = "/books", method = RequestMethod.GET)
public ModelAndView listBooks(@ModelAttribute("booksFilter") BooksFilter filter,
two @RequestParam parameters, HttpServletRequest request) throws ParseException {
myMethod();
}
@RequestMapping(value = "/books", method = RequestMethod.POST)
public ModelAndView listBooksPOST(@ModelAttribute("booksFilter") BooksFilter filter,
BindingResult result) throws ParseException {
myMethod();
do here your minor difference
}
private returntype myMethod(){
LONG CODE
}
関連
-
[解決済み] クラスを@Componentでアノテートした場合、Spring BeanとSingletonということになるのでしょうか?
-
[解決済み] Spring Boot JPA - 自動再接続の設定
-
[解決済み] 同じurlパターンに対して異なる引数で2つのメソッドを作成する
-
[解決済み] Spring BeanPostProcessorは具体的にどのように動作するのですか?
-
[解決済み] kotlinで@Autowiredのようなspringアノテーションを使用する方法とは?
-
[解決済み] RestTemplateを使ったヘッダ付きHTTP get
-
[解決済み] モックMVC - リクエストパラメータをテストに追加する
-
[解決済み] Spring MVC @RestControllerとリダイレクト
-
[解決済み] Spring Bootです。PasswordEncoderはどのように指定するのですか?
-
[解決済み] Spring Security 403エラー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] クラスを@Componentでアノテートした場合、Spring BeanとSingletonということになるのでしょうか?
-
[解決済み] Springのセキュリティ認証の例外を@ExceptionHandlerで処理する
-
[解決済み] Spring Hibernate - 現在のスレッドでトランザクションに同期したセッションを取得できませんでした。
-
[解決済み] Maven依存性 spring-webとspring-webmvcの比較
-
[解決済み] なぜ春になると静電場が自動化されないのか?
-
[解決済み] Spring CORS 'Access-Control-Allow-Origin' ヘッダが存在しない。
-
[解決済み] Spring AOP: JoinPointとPointCutの違いは何ですか?
-
[解決済み] RequestBodyと@RequestParamの違いは何ですか?
-
[解決済み] Spring Bootです。PasswordEncoderはどのように指定するのですか?
-
[解決済み] RestTemplateを使用する場合、内部Jacksonマッパーはどのように構成されますか?