杰克逊解串者没有被要求@ * Param

时间:2016-11-01 06:24:16

标签: java spring-boot jersey jackson jax-rs

我试图在jax路径参数上使用JsonDeserialzer。

这是我的@BeanParam对象,

@BeanParam
private CustomerWrapper reference;

@QueryParam("select")
private String select;

@QueryParam("count")
private boolean count;



@BeanParam
PaginationInfo paginationInfo;

@BeanParam
private SortingInfo sortingInfo;

@QueryParam("line")
private String line;

@QueryParam("typeCode")
private String typeCode;

class CustomReference {
  @NotNull
  @PathParam("profileReferenceId")
  @Encoded
  private String referenceId;

  public CustomerReference(String referenceId) {
     this.referenceId = referenceId;
  }

  public CustomeReference fromString() {
     return new CustomerReference(Base64.decode(referenceId));
  }
}

referenceId字段是base64编码的字符串,要对其进行解码,我使用的是jsondeserializer。

但是,我已经阅读过json messagereader对jax @ * params不起作用。

在另一篇文章中,我认为这可以通过创建javax.ws.rs.ext.ParamConverterProvider来实现。

Example,

@Provider
public class TestClass implements ParamConverterProvider {

    private Logger logger = LoggerFactory.getLogger(TestClass.class);

    @Override
    public <T> ParamConverter<T> getConverter(
            Class<T> rawType, Type genericType, Annotation[] antns) {

        logger.debug("rawtype " +rawType.getName());
        for(Annotation a : antns) {
            logger.debug("anotations " +a.annotationType().getName());
        }

        return null;
    }
}


output:
[DEBUG] 31 Oct 2016 23:20:23,788 DEBUG [http-nio-8082-exec-1] TestClass - rawtype boolean
[DEBUG] 31 Oct 2016 23:20:23,788 DEBUG [http-nio-8082-exec-1] TestClass - anotations javax.ws.rs.QueryParam

为什么此转换器只能识别一个查询参数并忽略其余参数。

0 个答案:

没有答案