传递自定义类型查询参数

我如何接受自定义类型查询参数?

public String detail(@QueryParam("request") final MYRequest request) { 

上面的行在启动服务器时出错

 jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization. 

关于可接受的注入类型,请查看@QueryParam文档。 (这同样适用于所有其他@XxxParam注释)

  1. 是一种原始类型
  2. 有一个接受单个String参数的构造函数
  3. 有一个名为valueOffromString的静态方法接受单个String参数(例如,参见Integer.valueOf(String)
  4. 有一个ParamConverterProvider JAX-RS扩展SPI的注册实现,它返回一个ParamConverter实例,该实例能够为该类型进行“from string”转换。
  5. Be ListSetSortedSet ,其中T满足上面的2,3或4。 生成的集合是只读的。

这些要求的原因是该值以字符串forms出现。 运行时需要知道如何将字符串转换为要注入的类型。 exception的原因是启动时有初始资源模型validation。 此validation检查以确保所有注入点都有效。 它看到注入的类型MyRequest不符合上述任何要求,并抛出exception。

基本上你有点2和3,你需要自己解析字符串,例如

 public class MyRequest { public static MyRequest fromString(string param) { // 1. Parse string // 2. Create MyRequest request; return request; } } 

你可以在这里看到一个使用ParamConverter的好例子