浏览 5068 次
锁定老帖子 主题:关于在ww中的对int类型的验证问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-07-29
<field name="user.age"> <field-validator type="required"> <message key="errors.required"/> </field-validator> <field-validator type="int"> <param name="min">1</param> <param name="max">99</param> <message key="errors.integer"/> </field-validator> </field> 其中验证规则是:age必须是一个整数,并且必填,并且必须是在1-99之间。 errors.required以及errors.integer都在配置属性文件中定义好了。 页面设置及action的设置都是一般的设置,在页面操作时出现如下情况: 1.当我在age栏内不填时,显示errors.required所代表的信息,正常; 2.当age栏内填写180(超出范围)时,显示errors.integer的信息,也正常; 3.但当我在age栏内填写gg(字符串)时,则显示Invalid field value for field "user.age".这不是我自己定义的。而且messager里似乎还有一条errors.required的信息。 我的问题是:如何定义用户输入非数字时显示的信息呢?我试着把<param name="min">1</param>以及 <param name="max">99</param>删掉,这时没有了范围的限制,但是输入非数字时,显示的还同3的结果一样。 哪位朋友能不能帮我解决一下这个问题? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-07-29
正则表达式
|
|
返回顶楼 | |
发表时间:2005-07-29
正则是王道。
那个错误信息是提交的数据转换为int时出的错,可以在该action使用的拦截器栈中去掉conversionError屏蔽掉。 |
|
返回顶楼 | |
发表时间:2005-07-30
我感觉 TypeConversionError 没什么不好, 它比正则表达式更严格, 保证类型不会出错, 至于如何显示, See this :
Tip: Reporting type conversion errors can be done in two ways: * On a per-field basis with the conversion validator * Globally via the conversion interceptor The default text for conversion errors isn't exactly pretty: Invalid field value for field "xxx". You can change this by defining an i18n property named invalid.fieldvalue.[propertyName], such as invalid.fieldvalue.foo. |
|
返回顶楼 | |
发表时间:2005-08-01
ww2的validation中能不能直接用正则表达式啊?
<field name="user.age"> <field-validator type="fieldexpression"> <parm 正则。。。。 </field-validator> |
|
返回顶楼 | |
发表时间:2005-08-19
<field-validator type="regexp" short-circuit="true"> <param name="expression">(^[a-z]+$);</param> <message>${getText('city.name');} ${getText('error.format');}</message> </field-validator> <validator name="regexp" class="RegexpFieldValidator"/> import com.opensymphony.xwork.validator.ValidationException; import com.opensymphony.xwork.validator.validators.FieldValidatorSupport; public class RegexpFieldValidator extends FieldValidatorSupport { private String expression; public void validate(Object object); throws ValidationException { String fieldName = getFieldName();; Object value = this.getFieldValue(fieldName, object);; // if there is no value - don't do comparison // if a value is required, a required validator should be added to the field if (value == null); return; if (!(value instanceof String); || !((String); value);.matches(expression);); { addFieldError(fieldName, object);; } } public String getExpression(); { return expression; } public void setExpression(String expression); { this.expression = expression; } } |
|
返回顶楼 | |