我试图在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
为什么此转换器只能识别一个查询参数并忽略其余参数。