发送以下请求时,我无法捕获异常。 empno数据类型很长。但我发送超过最大值的长期。即使我在我的pojo课程中尝试@Min
和@Max
注释,但它无法正常工作。根据我的要求,我不应该使用字符串而不是长。
{
"empno": 135458464765456464654564654566
}
public class Personal
{
private long empNo;
public void setEmpNo(long empNo)
{
this.empNo = empNo;
}
public long getEmpNo()
{
return this.empNo;
}
}
@RestController
@RequestMapping(value = "/employee/v1")
public class EmployeeController {
public ResponseEntity<LocationResponse> getLocationService(HttpServletRequest httpServletRequest,
@Valid @RequestBody Personal personal, HttpServletResponse httpResponse)
{
.... Bussiness Logic
}
}
答案 0 :(得分:0)
您应该使用BigInteger代替更大的数字。 Long vs BigInteger 或者,解决方法是在请求对象中将其作为String读取,然后使用服务层中的Long.parseLong(stringValue)将其解析为long,然后将其包装在try / catch块中。 / p>
答案 1 :(得分:0)
如果您不打算使用String,则可以使用BigInteger存储超过long的最大值的值。例如:
public class Personal
{
private BigInteger empNo;
public void setEmpNo(BigInteger empNo)
{
this.empNo = empNo;
}
public BigInteger getEmpNo()
{
return this.empNo;
}
}
BigInteger bd = new BigInteger("922337203685477582012312321");
System.out.println(bd.multiply(new BigInteger("15")));
System.out.println(bd);
输出
13835058055282163730184684815
922337203685477582012312321
请参阅此链接了解更多信息: https://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html