接口查询参数解析?

时间:2014-03-14 20:47:15

标签: rest jersey jackson jax-rs jersey-2.0

我认为这是不可能的,但我只是想验证。

我想做点像......

@Path("/awesome")
public class MyRestResource {

  @GET
  public void coolQuery(@QueryParam("user") User) {
    // ...
  }
}

public interface User {
  String name();
  Address address();
}

(请不要对这个例子发表评论......它是完全弥补而不是我的用例。)

我想这是不可能的,因为Jersey / JAX-RS通常需要静态方法public static T valueOf(String input),这显然是接口无法实现的。

那就是说,有没有办法解决这个问题,让查询参数成为一个接口?如果是这样,您如何指定解析器/解析逻辑?

由于

1 个答案:

答案 0 :(得分:1)

根据documentation,除了静态valueOf方法之外,还有更多方法:

  
      
  1. 是原始类型;
  2.   
  3. 拥有一个接受单个String参数的构造函数;
  4.   
  5. 有一个名为valueOffromString的静态方法接受单个String参数(例如,请参阅Integer.valueOf(String)java.util.UUID.fromString(String));
  6.   
  7. 具有javax.ws.rs.ext.ParamConverterProvider JAX-RS扩展SPI的注册实现,该实现返回javax.ws.rs.ext.ParamConverter实例,该实例能够为该类型进行“from string”转换。或
  8.   
  9. List<T>Set<T>SortedSet<T>,其中T满足上述2或3。生成的集合是只读的。
  10.   

使用ParamConverterProvider的解决方案应该适用于这种情况。