【问题标题】:Struts: Validate two fields at onceStruts:一次验证两个字段
【发布时间】:2015-07-29 16:59:21
【问题描述】:

我是 struts 新手,但我遇到了一个似乎无法解决的问题。

问题是,我在.jsp 页面中有两个日期字段,并且两者都是必需的。 简而言之,我有两个必填字段,但如果它们都是空的,我将无法收到两条错误消息。必须显示的唯一消息是“请插入日期间隔”,无论哪个是空的(或者,如果它们都是空的)。

我正在使用validation.xml,Struts 1.3 版

【问题讨论】:

  • 创建自定义验证器。
  • 我该怎么做?你有任何教程或我可以使用的东西吗?谢谢。

标签: java validation struts struts-1 struts-validation


【解决方案1】:

如果使用ValidatorFormvalidate 方法,两个或多个字段的验证太容易了。

要使用声明式自定义验证器,您需要阅读 this 参考指南,该指南包含用于验证两个字段的自定义验证器链接和示例。

这是一个如何比较两个字段以查看它们是否具有相同值的示例。一个很好的例子是当您验证用户更改密码时,有主密码字段和确认字段。

<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>
</field>
public class CustomValidator {

    // ------------------------------------------------------------ Constructors

    /**
     * Constructor for CustomValidator.
     */
    public CustomValidator() {
        super();
    }

    // ---------------------------------------------------------- Public Methods

    /**
     * Example validator for comparing the equality of two fields
     *
     * http://struts.apache.org/userGuide/dev_validator.html
     * http://www.raibledesigns.com/page/rd/20030226
     */
    public static boolean validateTwoFields(
        Object bean,
        ValidatorAction va,
        Field field,
        ActionMessages errors,
        HttpServletRequest request) {

        String value =
            ValidatorUtils.getValueAsString(bean, field.getProperty());
        String property2 = field.getVarValue("secondProperty");
        String value2 = ValidatorUtils.getValueAsString(bean, property2);

        if (!GenericValidator.isBlankOrNull(value)) {
            try {
                if (!value.equals(value2)) {
                    errors.add(
                        field.getKey(),
                        Resources.getActionMessage(request, va, field));

                    return false;
                }
            } catch (Exception e) {
                errors.add(
                    field.getKey(),
                    Resources.getActionMessage(request, va, field));
                return false;
            }
        }
        return true;
    }

}

【讨论】:

  • 我现在明白了,它对我帮助很大。我想我需要做更多的 Struts 研究!
猜你喜欢
  • 1970-01-01
  • 2011-03-29
  • 2011-11-13
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
  • 2015-12-07
相关资源
最近更新 更多