Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring MVC属性/字段绑定异常_Java_Spring_Spring Mvc_Model Binding_Numberformatexception - Fatal编程技术网

Java Spring MVC属性/字段绑定异常

Java Spring MVC属性/字段绑定异常,java,spring,spring-mvc,model-binding,numberformatexception,Java,Spring,Spring Mvc,Model Binding,Numberformatexception,我使用的是SpringMVC2.5,对于我的model/bean类,目前我使用的是服务器端验证。我想做的验证之一是检查一些输入是否不是数字(0-9)。用户可以输入非数字字符,如“abcd”,而不是“1234” 我有一个@模式,它只接受正的BigDecimal(它表示美元金额) jsp页面 <input type="text" name="offerSize" id="offerSize" value="${offerSetting.offerSize}" placeholder="$"

我使用的是SpringMVC2.5,对于我的model/bean类,目前我使用的是服务器端验证。我想做的验证之一是检查一些输入是否不是数字(0-9)。用户可以输入非数字字符,如“abcd”,而不是“1234”

我有一个
@模式
,它只接受正的BigDecimal(它表示美元金额)

jsp页面

 <input type="text" name="offerSize" id="offerSize" value="${offerSetting.offerSize}" placeholder="$"  />
我认为问题在于,在检查模式之前,它会将字符串值绑定到BigDecimal,这使得它失败

一个丑陋的解决方案可能是在offersizesetter方法中,我可以检查即将到来的值,如果它不是一个数字,我可以做一些事情。但是我不喜欢那个

处理此类绑定问题的更好方法是什么


仅供参考:我知道稍后我将进行客户端验证(使用JQuery)。现在,我假设用户以某种方式通过了客户端验证。

错误消息是可以自我解释的。
@Pattern
可用于验证
字符串
参数。数字(
int
double
BigDecimal
等)自动解析,无需特殊验证

因此,只需删除您的模式或使您的字段
String
,然后自己解析即可。(第二种解决方案不好)

顺便问一下,你确定你确实需要
BigDecimal
来操作金钱吗?你知道双码有多大吗?我认为它足够大,可以容纳近五千年来全世界印刷的货币总量

我认为问题在于,在检查模式之前,它会将字符串值绑定到BigDecimal,这使得它失败

是的

处理此类绑定问题的更好方法是什么

不知道你在这里是什么意思。有一个错误。错误被发现了。一切似乎都很好。你喜欢什么样的行为

仅供参考:我知道稍后我将进行客户端验证(使用JQuery)。现在,我假设用户以某种方式通过了客户端验证


甚至在以后,最好同时验证客户端和服务器端,IMO。客户端验证可能会有很多失败的方式,包括无辜的和恶意的,即使不是这样,能够重用服务器端代码而不必担心所有的验证都会消失,这很好,因为它位于客户端Java脚本中。

我想要使用该模式的原因是,它位于验证所有输入字符的中心位置。所以我不必检查它是否为负,是否为空,是否包含数字。第二个是可能的,但正如你所说,它可能是坏的。对于后一个问题,系统是10年前设计的,所以我们只能使用BigDecimal,我需要的是显示作为模式参数的消息。不是异常消息
 <input type="text" name="offerSize" id="offerSize" value="${offerSetting.offerSize}" placeholder="$"  />
Failed to convert property value of type [java.lang.String] to required type [java.math.BigDecimal] for property offerSize; nested exception is java.lang.NumberFormatException