2017-06-28 8 views
1

ジャージの圧縮機能を有効にしたい。私はjson形式のイベントのリストを返さなければならないWebサービスを持っています。 exempleの場合 :ジャージを使用したgzip圧縮の問題

{ 
    "page": 1, 
    "pageCount": 1, 
    "list": [ 
    { 
     "pk": 1, 
     "state": "ACTIVE", 
     "locationType": "ADDRESS", 
     "title": "titre", 
     "description": "hello", 
     "country": "osef", 
     "city": "osef", 
     "address": "osef", 
     "inAgendaCount": 0, 
     "dateBeginning": 1498734400758 
    } 
    ] 
} 

しかし、私はgzip圧縮を有効にすると、応答はこのようなものです:

{ 
    "page": 1, 
    "pageCount": 1, 
    "list": [ 
    { 
    } 
    ] 
} 

リストのすべてのイベントが遮断されています。ここ は私のWebサービスです:圧縮と

@Component 
@Path("/") 
public class EventSearchWebService { 

    @Autowired 
    private EventSearchController controller; 

    @GET 
    @Path("/event/search") 
    @Produces(MediaType.APPLICATION_JSON) 
    @JsonView(SmallView.class) 
    public Response search(@QueryParam("keywords") String keywords, @DefaultValue("1") @QueryParam("page") Long page) { 

     if (keywords != null && !keywords.trim().isEmpty()) { 
      return Response.status(200).entity(controller.search(keywords, page)).build(); 
     } else { 
      return Response.status(200).entity(controller.search(page)).build(); 
     } 
    } 
} 

マイResourceConfigの:

@Configuration 
@ApplicationPath("/rest") 
public class JerseyConfig extends ResourceConfig { 

    public JerseyConfig() { 
     // Compression 
     register(EntityFilteringFeature.class); 
     EncodingFilter.enableFor(this, GZipEncoder.class); 

     register(EventSearchWebService.class); 

     register(MultiPartFeature.class); 
     register(ValidationFeature.class); 
     register(ValidationExceptionMapper.class); 
     register(CrossDomainContainerResponseFilter.class); 

     registerClasses(AccessDeniedExceptionMapper.class, 
       GeneralUserExceptionMapper.class, 
       NoResultExceptionMapper.class, 
       UnknowExceptionMapper.class, 
       ValidationExceptionMapper.class); 
    } 
} 

そして、私のpageableListクラス:

public class PageableList<E> { 

    @Getter 
    @Setter 
    @JsonView(value = {SmallView.class, FullView.class}) 
    private long page; 

    @Getter 
    @Setter 
    @JsonView(value = {SmallView.class, FullView.class}) 
    private long pageCount; 

    @Getter 
    @Setter 
    @JsonView(value = {SmallView.class, FullView.class}) 
    private List<E> list; 

    public PageableList() { 
     super(); 
    } 

    public PageableList(List<E> list) { 
     super(); 
     this.list = list; 
    } 
} 

ログにエラーがありません。何が起こっているのかを知っている人はいますか?

はあなたに

EDITありがとう:さらなる調査の後、私はPageableListせずに直接イベントの私のリストを送信する場合、私はエラーを持っていることが判明:

Can not resolve PropertyFilter with id 'org.vagrant.server.entity.EventEntity'; no FilterProvider configured (through reference chain: java.util.ArrayList[0]) 

答えて

0

問題はResourceConfigの中でした。 この行:

register(EntityFilteringFeature.class); 

は役に立たず、バグが発生します。