欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

webwork的reg验证备抄 WebworkPHPXML 

程序员文章站 2022-06-11 15:18:18
...
问题:
oldbig说:
引用
我在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的结果一样。
哪位朋友能不能帮我解决一下这个问题?




办法:

wocienyoung说:
引用
java代码: 

<field-validator type="regexp" short-circuit="true">
            <param name="expression">(^[a-z]+$)</param>
            <message>${getText('city.name')} ${getText('error.format')}</message>
        </field-validator>
      


java代码: 

<validator name="regexp"      class="RegexpFieldValidator"/>


java代码: 

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;
    }
}


http://forum.iteye.com/viewtopic.php?t=13338

http://forum.iteye.com/viewtopic.php?t=9126
相关标签: Webwork PHP XML