【问题标题】:Using the Struts Validator, can I check if all fields are empty?使用 Struts Validator,我可以检查所有字段是否为空吗?
【发布时间】:2014-07-31 08:48:18
【问题描述】:

我正在重写旧项目的一部分以使用struts 1 validator framework

我已经针对每个单独的字段调整了验证规则,并使用了可以在其他形式中重复使用的正则表达式,例如:

        <field property="idNumber" depends="mask">
            <msg name="mask" key="error.formating.idnumber" />
            <arg position="0" value="SearchForm.idNumber" />
            <var>
                <var-name>mask</var-name>
                <var-value>${maskIdNumber}</var-value>
            </var>
        </field>

还有一个验证需要实现:我需要确保用户在提交之前填写了任何个字段。查看常见问题解答,我看到有像 validwhen 这样的条件可用于验证字段之间的相互关系,但如果我没记错的话,它们必须附加到表单字段之一。

如果我这样写:

        <field property="idNumber" depends="validwhen">
            <msg name="mask" key="error.form.empty" />
            <arg position="0" value="SearchForm.idNumber" />
            <var>
                <var-name>test</var-name>
                <var-value>(idNumber != null) or (packageNumber != null)</var-value>

            </var>
        </field>    

只有在“idNumber”字段不为空时才会尝试测试,对吗?常见问题解答指出

任何不是“必填”的字段都将跳过其他验证,如果 字段为空或长度为零。

【问题讨论】:

    标签: java validation struts-1 struts-validation


    【解决方案1】:

    我尝试过使用validwhen,但它是在 Stuts 1.2 中引入的,而我使用的是 1.1,所以我收到错误No ValidatorAction called validwhen found for field idNumber

    我可以使用requiredif,但它可能会使用我见过的最糟糕的语法。

    相反,我遵循https://stackoverflow.com/a/20086863/113305 中的技术,同时使用了Struts validator frameworkvalidate() 方法:

        public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors = super.validate(mapping, request);
    
        if (idNumber.length() < 1 && packageNumber .length() < 1) {
            errors.add("emptyForm",
                    new ActionError("error.form.empty", "emptyForm"));
        }
    
        return errors;
    

    【讨论】:

      猜你喜欢
      • 2014-11-06
      • 2014-11-14
      • 2012-06-21
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 2012-02-21
      • 2011-06-29
      相关资源
      最近更新 更多