1

最新の Spring-MVC (3.1.2.RELEASE) を使用

次のようなページング可能な REST メソッドがあります。

@RequestMapping(value = "/myThings", method = RequestMethod.GET)
public @ResponseBody
Page<MyThings> findMyThings(@Valid PageRequest pageRequest) {
    Page<MyThings> myThings = myService.findMyThings(pageRequest);
    return myThings;
}

org.springframework.web.client.RestOperations でテストしようとしています。特にページング不可のリクエストの場合、すべてが正常に機能します。ただし、ページング可能なものでは、REST メソッドで受信される「pageRequest」オブジェクトは、デフォルトのコンストラクターによって作成されたものであり、作成されて呼び出しに渡されたものではありません。

これは私が試したものです(restTemplateは「RestOperations」のインスタンスです:

    .... // make the pageRequest object
    if (pageRequest != null) {
        params.put("pageRequest", pageRequest);
    }
    String json = restTemplate.getForObject(restEndpoint + "/myThings", 
                    String.class, Collections.unmodifiableMap(params));

問題/問題がこちら側にあることはわかっています-Tomcatにデプロイし、URLを介してpageRequestパラメーターを渡すと、サーバー側のページングは​​完全に機能します。さらに、私はSpringコードをステップダウンしました.pageRequestがモデルに入れられた場合、それは引き出されるように見えます.それ以外の場合は、私が得ているデフォルトを取得します.

誰でも助けることができますか?

ありがとう!

4

1 に答える 1

1

渡す getForObject のパラメーターCollections.unmodifiableMap(params)は実際Object... urlVariablesには であり、変数は @PathVariable 型宣言のプレースホルダーであるため、これはあなたが持っている宣言に対してのみ機能します@PathVariables

別の方法は、あなたが持っている方法でそれを持っているが、この方法でクエリパラメータをサポートすることです:

String json = restTemplate.getForObject(restEndpoint + "/myThings?pagerequest={pageRequest}", 
                    String.class, Collections.unmodifiableMap(params));
于 2012-08-03T12:40:16.677 に答える