• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

使用它

rest 来源:user3678399 3次浏览

JAX-RS帕拉姆转换器 – 编译时错误,这是我的PARAM转换器使用它

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映射字符串,我通过我的url例如&sort="asc"来排序对象。但是我得到编译时错误have a registered implementation of paramconverter provider。当我通过查询参数&sort="somethung"时,我需要找到一种方法,通过使用自定义注释或使用Param Converter自动转换为SORT


===========解决方案如下:

参考您的意见,尝试注册您的供应商,如:

@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); 
    } 
} 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)