我不是任何球衣大师,但我读到球衣不能解决基于查询参数的java方法,但有时看起来确实如此,这是我的例子。
这是服务器代码:
@GET
@Path("/services")
public String getAll(
@QueryParam("limit") Integer limit,
@QueryParam("offset") Integer offset){
return "1 2 3";
}
这是客户端代码:
ClientResponse response = webResource
.path("services")
.queryParam("limit", "ab")
.get(ClientResponse.class);
logger.info(response.toString());
assertEquals(response.getStatus(), 200);
看起来泽西不喜欢“ab”,并且无法映射查询参数,因此它返回404,但是如果limit =“1”,我可以使用正确的方法。
在这种情况下,球衣是否有权返回404?我知道我可以使用String而不是Integer来扩展界面以覆盖任何可行的sintax错误的所有处理。我可以配置球衣代表我这样做吗? / p>
我正在使用服务器:grizzly / 1.9.18,jersey 1.11
谢谢!
答案 0 :(得分:3)
目前在泽西岛是不可能的。也许我们可以提出一个功能,使这个更友好。你可以附加到参数的@ErrorParam注释之类的东西怎么样。如果存在这样的参数并且某些QueryParam转换失败,则将使用默认值填充查询参数,并且将错误的参数的实际字符串值添加到使用@ErrorParam注释的参数中传递的名称 - 值映射? / p>
@GET
@Path("/services")
public String getAll(
@QueryParam("limit") Integer limit,
@QueryParam("offset") Integer offset,
@ErrorParam MultivaluedMap<String, String> typeErrors) {
if (!typeErrors.isEmpty()) {
// do something
}
return "1 2 3";
}
我在这里提交了一份RFE:http://java.net/jira/browse/JERSEY-1263
如果您有意见,请发表评论。