私たちの Web アプリでは、Spring MVC 3.2 を使用して、さまざまなオブジェクトの多くのページ分割されたリストを表示し、リスト内の他のページへのリンクは次のように構成されています。
/servlet/path?pageNum=4&resultsPerPage=10&sortOrder=ASC&sortBy=name
ただし、URL には追加の要求パラメーター (検索フィルターなど) も含まれる場合があります。
したがって、次のようなコントローラーメソッドがあります。
@RequestMapping(method = RequestMethod.GET, value="/ajax/admin/list")
public String ajaxlistGroups(Model model,
@RequestParam(value="pageNumber",required=false,defaultValue="0") Long pageNumber,
@RequestParam(value="resultsPerPage",required=false,defaultValue="10") int resultsPerPage,
@RequestParam(value="sortOrder",required=false,defaultValue="DESC") String sortOrder,
@RequestParam(value="orderBy",required=false,defaultValue="modificationDate")String orderBy) {
// create a PaginationCriteria object to hold this information for passing to Service layer
// do Database search
// return a JSP view name
}
そのため、この不器用なメソッド シグネチャがアプリ内で数回繰り返されることになり、各メソッドはページネーション情報を保持するために PaginationCriteria オブジェクトを作成し、入力を検証する必要があります。
これらのリクエスト パラメータが存在する場合、PaginationCriteria オブジェクトを自動的に作成する方法はありますか? たとえば、上記を次のように置き換えます。
@RequestMapping(method = RequestMethod.GET, value="/ajax/admin/list")
public String ajaxlistGroups(Model model, @SomeAnnotation? PaginationCriteria criteria,
) {
...
}
つまり、Spring で通常の GET リクエストから requestParams の定義されたサブセットを取得し、それらを自動的にオブジェクトに変換して、コントローラー ハンドラー メソッドで使用できるようにする方法はありますか? 以前は @ModelAttribute しか使用していませんでしたが、ここでは適切ではないようです。
ありがとう!