0

検索を実行するために、GET リクエストを処理する Spring MVC コントローラーがあります。

これらのリクエストには、クエリ文字列で渡すことができる多くのオプション パラメータがあります。

例えば:

@Data
public class SimpleSearchRequest implements SearchRequest {

    private String term;
    private List<Status> stati;
    @JsonDeserialize(using=DateRangeDeserializer.class)
    private Range<DateTime> dateRange;  
}

これに POST または PUT を使用していた場合、@RequestBody. ただし、GETを使用しているため、これは収まりません。

代わりに、メソッド シグネチャで可能なすべてのパラメータを としてリストする必要があるようです@RequestParam(required=false)

見苦しいメソッド シグネチャにつながるだけでなく、ここでクラスを使用しないことで、あらゆる種類の OO の利点を失っています。

使用しようとすると@RequestBody失敗します (当然のことですが)。ここここで説明したように、GET で実際の要求本文を使用することは望ましくありません。

@RequestParamGET リクエストで複数の を強く型付けされたオブジェクトにマーシャリングすることを Spring MVC にサポートさせる方法はありますか?

4

1 に答える 1

2

答えは、単に注釈を削除することだったようです。

これはうまくいきました:

@RequestMapping(method=RequestMethod.GET)
public @ResponseBody List<Result> search(SearchRequest request) {}
于 2013-02-07T01:49:15.423 に答える