在JSP界面中存在一个文本框,输入的是金额,对输入的字段进行校验virify="|PlusNumber&&|DotLength<4"。
也就是说在填写的时候必须填写正数,并且这个文本框不是必填,内容可为Null。在数据库中这个字段是number(20, 4)。于是出现了一个问题。
因为数据库中存储的是number类型的数据,所以在实体类中定义的类型是BigDecimal。此时,如果该文本框不填写,那么发送过来的将是null或者""。
在实体类的set方法中,如果使用正常的。
public void setXXX(BigDecimal value){
this.xxx = value;
}
那么传入的空字符串是不能够存入数据库的,会报错。 大概错误的意思:set方法不能将String类型的数据存入number格式的字段中
解决方法,添加一个重载的set方法:
public void setXXX(String value){
if(value==null || value.equals("")){
this.xxx = null;
}else{
this.xxx = new BigDecimal(value);
}
}
同时,不能够将原来的set方法,原因是在list界面进行查找的时候,还需要使用原始的set方法ÿ