2016-06-27 1 views
0

Jersey 2.16を使用すると、表現リストのブール値フィールドに一致するブール値のクエリパラメータを渡して、リストのサブセットを返すようにしています。例えばジャージーをフィルタリングして表現リストのサブセットを返す

、のは、私はそうのようなリンゴのリソースを持っているとしましょう:

@GET 
@Path("apple/list") 
public Response getAppleList(@DefaultValue("false") @QueryParam("isGreen") final boolean isGreen) { 
    return appleService.getAppleList(); 
} 

そして、私のリンゴの表現は次のようになります。

public class AppleRepresentation { 

    private int id; 
    private String colour; 
    private String country; 
    private String isGreen; 
} 

は内蔵のジャージーフィルタリング機構はありますそれは私のList<AppleRepresentation>をフィルタリングし、緑色のリンゴだけを返しますか?

これまでのところ、Jersey entity filteringを調べました。私が見たことから、リスト全体またはフィールドをフィルタリングする方法はSelectableEntityFilteringFeatureです。

残念ながら、field = valueのリストのサブセットのみを返す簡単な方法はありません。

答えて

1

Java 8のネイティブストリームフィルタリングメソッドを試しましたか?

isGreenがbooleanの考慮
appleService.getAppleList().stream().filter(a -> a.isGreen); 

...

(ただし、それをテストしていない)

+0

はそれを試していません。プロジェクトはJava8互換ではありませんが、残念ながらそれはオプションではありません。緑色のリンゴのみを取得するために別のSQLクエリを使って別のサービスメソッドを追加する必要があるようです。私はこのために取ることができるジャージーのショートカットがあるかどうか疑問に思っていた。 – Stefan

+0

ああ。データベース側でフィルタリングすることができれば、それはさらに優れています。 – synthomat

関連する問題