Dijit Controls的Spring表单字段错误

时间:2011-02-23 18:00:23

标签: spring dojo

我有一个使用spring form控件的简单表单。我也在控件上使用dojoType。

例如:<form:input path="salary" style="width:10em" dojoType="dijit.form.ValidationTextBox"/>

我正在使用dojo进行一些表单验证。我还在spring中添加了一些服务器端验证。我试图使用弹簧验证来更新我的dijit字段,以突出显示错误。这就是我提出的。这感觉就像一个黑客,我想知道是否有人有更好的解决方案。

首先在表单的最底部我有一个隐藏的span元素,列出了spring返回的所有错误:hasBindErrors如下:

<span id="allErrors" style="visibility:hidden">
     <spring:hasBindErrors name="myForm">
          <c:forEach var="error" items="${errors.allErrors}">
              ${error.field}
          </c:forEach>
     </spring:hasBindErrors>
</span>

然后我在onAddLoad上添加了一个dojo函数,它抛出了表单字段的字符串,删除了任何括号,然后将dijit类设置为该字段的错误,如下所示:

        dojo.addOnLoad(displayErrors);

    function displayErrors() {
        dojo.forEach(dojo.trim(dojo.byId("allErrors").innerHTML).split(" "), function(value) {
            var newVal = value.replace(/[\[\]]/g, '');
            if (dojo.byId(newVal+'.errors') != 'undefined') {
                dijit.byId(newVal).state = "Error";
                dijit.byId(newVal)._setStateClass();
            }
        });
    }

(我做替换的原因是因为spring生成没有括号的id属性,但是将它们留在name属性上。而且错误是通过name而不是id引用的。)

这很好但我只是想知道是否有其他人遇到任何与此类似的解决方案,或者是否有更简单的方法来做同样的事情。

由于

0 个答案:

没有答案