Java Jersey中的QueryParams整数溢出

Java Jersey中的QueryParams整数溢出,java,jersey,jsr,Java,Jersey,Jsr,泽西爪哇 @GET @Path("/path1") public String getFunction( @QueryParam("param1") Integer intParam1 ) { ... } 发送获取请求 //溢出Int 如何处理这些错误? 我想捕获错误并抛出另一个(我的)错误,这是因为您传入的号码: 122253462544 大于java可以处理的最大整数值:2^31-1或2147483648 尝试将参数类型设置为“长”: @GET @Path("/path1

泽西爪哇

@GET
@Path("/path1")
public String getFunction(
    @QueryParam("param1") Integer intParam1
) {
    ...
}
发送获取请求

  • //溢出Int

  • 如何处理这些错误?
    我想捕获错误并抛出另一个(我的)错误,这是因为您传入的号码:

    122253462544

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

    尝试将参数类型设置为“长”:

    @GET
    @Path("/path1")
    public String getFunction(
        @QueryParam("param1") Long intParam1
    ) {
        ...
    }
    
    尝试以下方法

    @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
        }
    }
    

    @GET
    公共字符串get(@QueryParam(“count”)int count,@ErrorParam映射错误){
    如果(!errors.isEmpty()){
    抛出新的WebApplicationException(…您想要生成的任何响应;
    }
    …如果参数正常,可以执行任何操作。。。
    }
    
    但是您想如何处理它们?您会遇到什么错误?我想捕获错误并抛出另一个(我的)错误。现在,如果数字大于Long,我可以调试此方法(不进入函数)。我不理解您的注释。如果数字大于Long,那么您应该接受字符串,并尝试解析为整数、long等。
    @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 ...
    }