メソッドカスタム(GET)のREST Webサービスがあります。cxfのメッセージ本文にカスタムオブジェクトを設定する方法は?
@GET
@Path("/custom")
public UIResponse custom(final UIParameters uiParameters){...}
このように、この方法には1つの引数があります。これは私のカスタムオブジェクトです。
オブジェクトUIParametersは、クエリ文字列として指定された引数から作成されます。
例えば、私は、URLからこのパラメータを取得UIParameterオブジェクトを構築し、メッセージの内容を設定するためにInInterceptorを使用しようとしました
UIParameters {
String objectType = "article";
}
:http://example.com/custom?objectType=article
UIParameters 1つのフィールドが含まれますオブジェクト。不幸にもそれはうまくいかない。 その後、私はUIParametersのMessageBodyReaderを提供しましたが、それでも動作しません。
この目標を達成するにはどうすればよいですか?
おかげ
更新:InInterceptorで
を私はヘッダをhttpにクエリ文字列をコピーしました。 MessageBodyReaderでユーザプレースパラメータにアクセスできるURLの一部。ここで私のオブジェクトUIParametersを構築することができます。
すべてうまくいきますが、私はこの解決策が最高だとは思わない。
もっと良い解決法を知っていますか?
はありがとう
@Context UriInfo
アノテーションを使用します。もちろんこれは最善の方法ですが、残念ながらビルダーパターンを使用したいのでセッターを使用できません。 – bombelセッターなしでお試しください。私はカスタムでそれらをコピーしましたが、ドキュメントが必要でないかもしれないのを見てください。 – pedrofb
すべてのチェーンを呼び出す方法。新しいUIParameters()。Builder()。objectType( "type")。ビルド();私はすべてのフィールドを設定した後、オブジェクト全体を検証したい。 – bombel