【问题标题】:Struts Form Validation Don't Perform Validation Depending on button clickedStruts 表单验证不执行验证取决于单击的按钮
【发布时间】:2010-04-23 13:12:32
【问题描述】:

我有一个在 struts 上运行的 j2ee Web 应用程序。我正在使用验证 XML 进行表单验证。我有一个表单中的多个按钮的问题。我有保存、删除和取消按钮。问题是我希望单击删除按钮时不执行验证。我该怎么做。

【问题讨论】:

    标签: validation forms struts


    【解决方案1】:

    在 Struts 中没有过多地使用 Validation 框架,但您可以通过覆盖操作表单中的 validate() 方法来做到这一点。

    org.apache.struts.validator.ValidatorForm 是 Struts 进入 Validator 插件的入口点。 ValidatorForm 覆盖 ActionForm 的 validate() 方法,并将验证委托给 Validator。

    如果您覆盖表单中的 validate() 方法并仅在需要时调用 ValidatorForm 中的方法,您可能会跳过对所需按钮的验证,例如:

        public ActionErrors validate(ActionMapping mapping, 
                                     HttpServletRequest request) { 
          if (/* check for clicked button*/) {
            //skip validation and just return empty (i.e. no error) 
            return new ActionErrors();
          }
          // else, delegate to the validator framework
          super.validate(mapping, request);
        }
    

    【讨论】:

      【解决方案2】:

      我也对这个限制感到沮丧。我通过在表单内创建一个输入按钮来提出“取消”类型的功能,并使用 url 标签作为将浏览器位置设置为的操作。这样,表单上的验证只会在提交时触发,而不会为我们的特殊取消按钮触发。当两者都是submit 类型时,我无法让它跳过一个按钮或另一个按钮的验证。使用此解决方案,客户端验证也将正常工作。

      <sx:form validate="true" action="someAction">
           <sx:submit value="Save Changes" theme="simple"/> |
           <sx:url action="umhome"  id="cancel"></sx:url>
           <input type="button" value="Cancel" onclick="return window.location = '<sx:property value="%{#cancel}"/>'; "/>
      </sx:form>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-12
        • 1970-01-01
        • 2021-12-01
        • 2016-08-02
        • 1970-01-01
        • 2017-06-06
        • 1970-01-01
        相关资源
        最近更新 更多