浏览 1987 次
|
锁定老贴子 主题:关于在ww中的对int类型的验证问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2005-07-29
我在user-validation.xml中定义了如下的验证规则
<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的结果一样。 哪位朋友能不能帮我解决一下这个问题? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2005-07-29
正则表达式
|
|
| 返回顶楼 | |
|
最后更新时间:2005-07-29
正则是王道。
那个错误信息是提交的数据转换为int时出的错,可以在该action使用的拦截器栈中去掉conversionError屏蔽掉。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-07-30
我感觉 TypeConversionError 没什么不好, 它比正则表达式更严格, 保证类型不会出错, 至于如何显示, See this :
[code:1] 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. [/code:1] |
|
| 返回顶楼 | |
|
最后更新时间:2005-08-01
ww2的validation中能不能直接用正则表达式啊?
<field name="user.age"> <field-validator type="fieldexpression"> <parm 正则。。。。 </field-validator> |
|
| 返回顶楼 | |
|
最后更新时间:2005-08-19
[code:1]<field-validator type="regexp" short-circuit="true">
<param name="expression">(^[a-z]+$)</param> <message>${getText('city.name')} ${getText('error.format')}</message> </field-validator> [/code:1] [code:1]<validator name="regexp" class="RegexpFieldValidator"/>[/code:1] [code:1]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; } }[/code:1] |
|
| 返回顶楼 | |








