碰到一个问题,百度校验一个参数 是用int类型。
/**
* 交期天数
*/
@NotNull
private int deliveryDay;
用@NotNull注解来拦截未传的值,然后不穿这个交期天数,竟然通过了校验。打了断点进去看发现自己自动赋值为0。但是数据库的默认值是3,所以这算一个bug。因为这是一个pojo类,所以这个是属于全局变量,而全局变量是由系统进行初始化的,而局部变量需要自己来初始化。而int型初始化是0,而Integer是null。所以需要控制入参类是包装类型,否则在校验时有时就会有问题。之后把 deliveryDay改成Integer类型的,但是set get方法还是维持原来的基本类型
/**
* 获取 交期天数
*/
public int getDeliveryDay() {
return this.deliveryDay;
}
/**
* 设置 交期天数
*/
public void setDeliveryDay(int deliveryDay) {
this.deliveryDay = deliveryDay;
}
校验还是生效了拦截了我没有传deliveryDay这个参数提示不能为空,错误字段。我猜测的是说明百度校验是对参数属性来校验,并没有通过set get方法。但是为什么是这样我不太清楚。
所以附上以后的开发规范