传递自定义类型查询参数
我如何接受自定义类型查询参数?
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
注释)
- 是一种原始类型
- 有一个接受单个String参数的构造函数
- 有一个名为
valueOf
或fromString
的静态方法接受单个String参数(例如,参见Integer.valueOf(String)
) - 有一个ParamConverterProvider JAX-RS扩展SPI的注册实现,它返回一个ParamConverter实例,该实例能够为该类型进行“from string”转换。
- Be
List
,Set
或SortedSet
,其中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
的好例子
- @Context注入无效在Jersey ContainerRequestFilter(Dropwizard)
- DropWizard Auth by Example
- 使用dropwizard覆盖带有env变量的服务器连接器配置
- 使用Jersey的AbstractHttpContextInjectable自定义方法注释不工作
- 如何在yml中获取我的配置值 – 使用dropwizard(microservice)Jersey DI @Injection?
- Spring – 以编程方式生成一组bean
- 使dropwizard中的cors无法正常工作
- Dropwizard热部署
- 使用dropwizardvalidation,我可以访问数据库以插入记录