java - 如何使用 Struts validator 使用字段组合来验证日期

标签 java struts struts-validation

如果我的表单上有 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/

相关文章:

javascript - 如何在某些条件下禁用 Struts 验证

java - 在 Struts2 中验证整数值?

java - 使用for循环为多个 ImageView 设置图像资源

java - 如何使 Wordat 以字符串形式返回页面上该位置的单词。如果该行或单词不存在则返回 null

java - 如何将 EJB 模块从 Netbeans 部署到 Glassfish

java - 我可以在点击 html 页面中的 html 链接时调用 Struts2 Action 吗

java - mys JSP中的迭代器错误

java - 如何在jsp页面中显示4个按钮并限制访问?

java - 我如何检查 gson 中返回的对象是否为 null

java - 为什么 Struts 2 注解没有 LongRangeFieldValidator