如果我的表单上有 3 个文本字段,我如何使用 struts validator 来检查所有 3 个字段的组合是否应形成有效日期。
例如
<form action="/test">
<input type=text name=day>
<select name=month>
<option value=JAN>JAN</option>
<option value=JAN>JAN</option>
<option value=JAN>FEB</option>
---
---
<option value=DEC>DEC</option>
</select>
<input type=text name=year>
</form>
在 struts validator 中我可以做这样的事情
<field
property="day"
depends="required,mask">
<arg key="myForm.day"/>
<var>
<var-name>mask</var-name>
<var-value>^[0-9]*$</var-value>
</var>
</field>
但是我如何检查日+月+年是有效日期?包括二月和闰年?
最佳答案
查看 Struts 文档 Struts Validator Guide找到下面的例子
Comparing Two Fields
这是一个示例,说明如何比较两个字段以查看它们是否具有相同的值。一个很好的例子是,当您验证用户更改密码时,会出现主密码字段和确认字段。
<validator name="twofields"
classname="com.mysite.StrutsValidator"
method="validateTwoFields"
msg="errors.twofields"/>
<field property="password"
depends="required,twofields">
<arg position="0" key="typeForm.password.displayname"/>
<var>
<var-name>secondProperty</var-name>
<var-value>password2</var-value>
</var>
public static boolean validateTwoFields(
Object bean,
ValidatorAction va,
Field field,
ActionErrors errors,
HttpServletRequest request,
ServletContext application) {
String value = ValidatorUtils.getValueAsString(
bean,
field.getProperty());
String sProperty2 = field.getVarValue("secondProperty");
String value2 = ValidatorUtils.getValueAsString(
bean,
sProperty2);
if (!GenericValidator.isBlankOrNull(value)) {
try {
if (!value.equals(value2)) {
errors.add(field.getKey(),
Resources.getActionError(
application,
request,
va,
field));
return false;
}
} catch (Exception e) {
errors.add(field.getKey(),
Resources.getActionError(
application,
request,
va,
field));
return false;
}
}
return true;}
我认为您可以作为比较和验证三个字段的基础,这三个字段一起形成正确的日期
祝你好运。
关于java - 如何使用 Struts validator 使用字段组合来验证日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4096901/