【问题标题】:Struts2 - datepicker client-side validation returns same error message twiceStruts2 - datepicker 客户端验证两次返回相同的错误消息
【发布时间】:2012-09-12 12:36:32
【问题描述】:

我使用带有日期选择器的 struts2 表单:

<s:form action="%{#parameters.myAction}" namespace="/" method="post" name="myForm" enctype="multipart/form-data" focusElement="dealTitleId" validate="true">
...
<sj:datepicker name="dealDisplayEnd" required="true" key="dealDisplayEnd-label" displayFormat="dd-mm-yy" readonly="true" minDate="0"/>

请注意启用客户端验证的validate="true" 选项(我需要此选项以防止在发生某些错误时丢失有关文件上传的其他一些信息)。

然后还为它创建了 XML:

<field name="dealDisplayEnd">
        <field-validator type="required">
             <message key="error.dealDisplayEnd.empty"/>
        </field-validator>
  </field>

一切正常,只是错误重复了两次:

查看网页源码,看到验证脚本生成了两次:

 // field name: dealDisplayEnd
        // validator name: required
        if (form.elements['dealDisplayEnd']) {
            field = form.elements['dealDisplayEnd'];
            var error = "Deal display end date must be provided!";
            if (field.value == "") {
                addError(field, error);
                errors = true;

            }
        }
        // field name: dealDisplayEnd
        // validator name: required
        if (form.elements['dealDisplayEnd']) {
            field = form.elements['dealDisplayEnd'];
            var error = "Deal display end date must be provided!";
            if (field.value == "") {
                addError(field, error);
                errors = true;

            }
        }

这是 struts2 的错误吗?还是我做错了什么?是因为我正在使用 datepicker 和客户端验证吗?我正在使用 struts2-core-2.3.4.jar 和 struts2-jquery-plugin-3.3.3.jar。 有没有简单的方法可以打补丁(我找不到生成的地方)?

谢谢。

【问题讨论】:

    标签: jquery validation struts2 datepicker


    【解决方案1】:

    是的,你是对的,这似乎是来自struts2-jquery-plugin 的错误。以下是一些参考资料:

    REFERENCE 1
    REFERENCE 2

    struts2-jquery-plugin作者的忠告:

    In this case you should not set validate="true". Implement you own validation handling in an own onBeforeTopic. How it works can you see in the struts2 jquery sources.

    我猜你正在使用&lt;sj:submit/&gt;,如果你没有使用targets属性,你可以尝试使用&lt;s:submit/&gt;,它可能会解决你的问题。解决这个问题的方法还有很多,自己尝试一下,如果不能完成,请告诉我们。

    【讨论】:

    • 嗨,谢谢,我已经在使用&lt;s:submit/&gt;。我将禁用客户端验证并为此字段实施我自己的验证。
    • 让问题处于打开状态,以防提供其他答案。
    猜你喜欢
    • 2013-07-19
    • 2014-04-19
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多