如何接受自定义类型查询参数?
public String detail(@QueryParam("request") final MYRequest request) {
以上行在启动服务器时出错
jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
答案 0 :(得分:12)
关于可接受的注入类型,请查看@QueryParam
文档。 (这同样适用于所有其他@XxxParam
注释)
valueOf
或fromString
的静态方法接受单个String参数(例如,参见Integer.valueOf(String)
)List<T>
,Set<T>
或SortedSet<T>
,其中T
满足上述2,3或4。生成的集合是只读的。这些要求的原因是该值以字符串形式出现。运行时需要知道如何将字符串转换为要注入的类型。异常的原因是启动时有初始资源模型验证。此验证检查以确保所有注射点都有效。它看到注入的类型MyRequest
不符合上述任何要求,并引发异常。
基本上你有第2点和第3点,你需要自己解析字符串,例如
public class MyRequest {
public static MyRequest fromString(string param) {
// 1. Parse string
// 2. Create MyRequest request;
return request;
}
}
您可以看到使用ParamConverter
here