struts2的min和max <param />的int fieldvalidator未正确验证

时间:2010-06-26 13:44:23

标签: struts2

在我的struts2应用程序中,我有一个带有“phone”字段的jsp页面,我已经使用

应用了验证
<field-validator type="int">
<param name="min">4</param>
<param name="max">20</param>
<message key="errors.range"/>
</field-validator>

int type min和max对我没有验证,当我尝试给出正确的大于4的数字时,它给出一个负数

这是我的jar文件

commons-beanutils-1.8.0.jar  
commons-digester-1.8.1.jar  
commons-fileupload-1.2.1.jar  
commons-logging-1.1.jar    
freemarker-2.3.13.jar  
mail.jar  
ognl-2.6.11.jar  
spring.jar  
struts2-core-2.1.6.jar  
struts2-dojo-plugin-2.1.6.jar  
struts2-spring-plugin-2.1.6.jar  
struts2-tiles-plugin-2.1.6.jar  
tiles-api-2.1.2.jar  
tiles-compat-2.1.2.jar  
tiles-core-2.1.2.jar  
tiles-jsp-2.1.2.jar  
tiles-servlet-2.1.2.jar  
xwork-2.1.2.jar 

2 个答案:

答案 0 :(得分:0)

呃......你正在试图确认电话号码介于'4'和'20'之间???

我想您正在尝试验证电话长度(作为字符串)介于4到20之间,这是完全不同的事情。查看String Length validator

请记住:对于凡人而言,“电话号码”是一个数字。对于程序员来说,“电话号码”不是数字,而是字符串(由数字和可能的其他字符组成)。信用卡号或邮政编码也是如此。一条经验法则:如果你可以远程想象你会用它做一些算术(比如一笔钱),那就是一个数字。如果要保留(甚至是假设的)前导零,或者它可能包含一些非数字字符,那么它不是数字而是字符串。

答案 1 :(得分:0)

也许你应该尝试正则表达式,这是一个例子

<validator type="regex">
    <param name="fieldname">personBean.phoneNumber</param>
    <param name="expression"><![CDATA[\d{3}-\d{3}-\d{4}]]></param>
    <message>Phone number must be entered as 999-999-9999.</message>
</validator>

该链接有助于http://www.itinpractice.com/tutorials/397/struts-2-form-validation-using-xml.html