溢出@QueryParams整数在泽西岛

时间:2014-05-19 14:14:37

标签: java jersey jsr

Java,Jersey

@GET
@Path("/path1")
public String getFunction(
    @QueryParam("param1") Integer intParam1
) {
    ...
}

发送获取请求

  1. http://domain.cc/path1?param1=1222534625474 //溢出Int

  2. http://domain.cc/path1?param1=qweqwe

  3. 如何处理此错误? 我想捕获错误并抛出另一个(我的)错误

3 个答案:

答案 0 :(得分:2)

https://java.net/jira/browse/JERSEY-1263

@GET
public String get(@QueryParam("count") int count, @ErrorParam Map<String, String> errors) {
    if (!errors.isEmpty()) {
        throw new WebApplicationException(...whatever response you want to generate...);
    }
    ... do whatever you want to do if parameters are fine ...
}

答案 1 :(得分:0)

这是因为您传入的号码:

  

1222534625474

大于java可以处理的最大整数值:2 ^ 31-1或2147483648。

尝试将参数类型设置为long:

@GET
@Path("/path1")
public String getFunction(
    @QueryParam("param1") Long intParam1
) {
    ...
}

答案 2 :(得分:0)

请尝试以下操作。

@GET
@Path("/path1")
public String getFunction(
    @QueryParam("param1") String intParam1Str
) {
    Integer intParam1 = null;
    try {
        intParam1 = Integer.parseInt(intParam1Str");
    } catch (Exception e) {
        //do whatever you want
    }
}