这是我的参数转换器
import org.springframework.data.domain.Sort;
public class MyParamConverter implements ParamConverter<Sort> {
@Override
public Sort fromString(String s){
return new Sort(new Sort.Order(Sort.Direction.ASC, "ds"));
}
@Override
public String toString(Sort mo){
return mo.toString();
}
}
这是我的paramconverter提供商
@Provider
public class MyParamConverterProvider implements ParamConverterProvider {
@Override
public <T> ParamConverter<T> getConverter(Class<T> rawType, Type genericType, Annotation[] annotations) {
if(rawType.equals(Sort.class)){
return (ParamConverter<T>) new MyParamConverter();
}
return null;
}
我正在尝试在我的API中使用
@GET
@Path("/")
Response read(@QueryParam("sort") Sort order);
我期待jax映射我在我的网址中传递的字符串,例如&sort="asc"
排序对象。但是我得到have a registered implementation of paramconverter provider
的编译时错误。我需要找到一种方法,当我将查询参数传递为&sort="somethung"
时,它会通过使用自定义注释或使用SORT
自动转换为Param Converter
。
答案 0 :(得分:0)
参考您的评论,尝试注册您的提供商,如:
@ApplicationPath("/")
public class MyApplication extends ResourceConfig {
@Override
public Set<Class<?>> getClasses() {
final Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(MyParamConverterProvider.class);
return classes;
}
}
或者,如果您使用泽西岛
@ApplicationPath("/")
public class MyApplication extends ResourceConfig {
public MyApplication() {
packages("my.package");
// or without package scanning
register(MyParamConverterProvider.class);
}
}