webwork的reg验证备抄 WebworkPHPXML
程序员文章站
2022-06-11 15:18:18
...
问题:
oldbig说:
办法:
wocienyoung说:
http://forum.iteye.com/viewtopic.php?t=13338
http://forum.iteye.com/viewtopic.php?t=9126
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的结果一样。
哪位朋友能不能帮我解决一下这个问题?
<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;
}
}
<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