论坛首页 Java企业应用论坛

关于在ww中的对int类型的验证问题

浏览 5068 次
精华帖 (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的结果一样。
哪位朋友能不能帮我解决一下这个问题?
   发表时间:2005-07-29  
正则表达式
0 请登录后投票
   发表时间:2005-07-29  
正则是王道。
那个错误信息是提交的数据转换为int时出的错,可以在该action使用的拦截器栈中去掉conversionError屏蔽掉。
0 请登录后投票
   发表时间: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.
0 请登录后投票
   发表时间:2005-08-01  
ww2的validation中能不能直接用正则表达式啊?

<field name="user.age">
<field-validator type="fieldexpression">
  <parm 正则。。。。
</field-validator>
0 请登录后投票
   发表时间: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;
    }
}
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics