2016-05-18 7 views
2

私はページネーションをしようとしています。私はうまくいっていますが、リソースURLを取得する方法には疑問があります。katharsisのページングのリソースリンクを取得する方法

私のリソースリポジトリでは、自分のリンクを生成するために使用するリソース用のURLを取得するために、レイジー的な方法でResourceRegistryを注入します(循環依存性であることはわかっています)。

String resourceUrl = resourceRegistry.getResourceUrl(Book.class); 

正常に動作しますが、循環依存が私を煩わせます。リソースURLを取得する静的クラスがありますか?あるいは、これにはまったく異なる方法がありますか?

+0

katharsisがjsonを返すときに間違ったリンクがありますか?自分でリンクを作成する必要はありません。 '@ JsonApiToOne'を見たことがありますか?それは[Katharsis docs](http://katharsis.io/docs)の兄弟ですか? – sorrymissjackson

+0

@sorrymissjackson私は、ページ設定に使用したいトップレベルの「リンク」属性について話しています - http://jsonapi.org/を参照してください。 – user2793390

+0

私は参照してください。最上位の 'LinksInformation'を提供するために' LinksRepository'インターフェースを試しましたか?インターフェイスは、あなたがURLを取得するのに役立つようではありませんが。 katharsisのシリアライザをすばやく見れば、URLを取得する別の方法( 'resourceRegistry.getResourceUrl'以外)を見つけることはできませんでした。 – sorrymissjackson

答えて

0

これは満足できる答えではないかもしれませんが、katharsisはシリアライザでリンクを生成します。あなたはおそらくカタールのシリアライザの1つを拡張し、利用可能なアイテムの総数を含む任意のメタ情報を知るようにすることができます。これはクライアントがとにかく知っておく必要があるでしょう。このデータから、前ページと次ページのトップレベルリンクを作成できます。 katharsisシリアライザでは、とにかくQueryParamsと一緒に元のページ区切りパラメータを含むresourceRegistryが利用可能になります。 これはすべて非常に仮説的です。

katharsisの開発者によって提案された解決策は次のようになります。

@JsonApiFindAll 
public JsonApiResponse findAll() { 
    return new JsonApiResponse() 
     .setEntity(Collections.singletonList(new Task(1L, "John"))) 
     .setLinksInformation(new LinksInformation() { 
      public String self = "..."; 
      public String first = "..."; 
      public String prev = "..."; 
      public String next = "..."; 
      public String last = "..."; 
     }); 
} 

ここから撮影:

それでも、手工芸のリンクが必要なようです。

関連する問題