2012-02-28 62 views
0

我有一个春天的应用程序,我验证定制春天验证器类的所有验证。如何设置焦点元素弹簧基础的应用

我的形式有近15 fields.If没有在最后一栏的错误,如何将焦点设置到该元素。

春天在什么标签支持。任何技术想法?目前,我在字段本身附近显示我的错误消息。

回答

2

它可以使用spring:bind标记以确定一个字段或整个模型对象是否具有错误,并且对象的后处理(提交)的整体状态。

<spring:bind path="user.username"> 
    <input id="inputId" type="text" name="${status.expression}" value="${status.value}"/> 
    <c:if test="${status.error}"> 
     <c:forEach items="${status.errorMessages}" var"error"> 
      <span class="field-error">${error}</span> 
     </c:forEach> 
     <script type="text/javascript"> 
      document.getElementById('inputId').focus(); 
     </script> 
    </c:if> 
</spring:bind> 

注:

  • status变量由spring:bind标签露出。
  • JavaScript部分将集中的元件当特定字段 具有验证错误。
1

您可以将autofocus设置为所有有错误的字段,但浏览器只会自动对焦(并滚动)到第一个。

<spring:bind path="someFieldName"> 
    <input type="text" name="someFieldName" value="${status.value}" ${status.error?'autofocus="autofocus"':''} /> 
</spring:bind> 

这里不能使用spring的<form:input />,因为它不适用于条件属性。

0

我用这个:

<spring:bind path="*"> 
     <c:if test="${status.error}"> 
      <script type="text/javascript"> 
       window.onload = function(){ 
        document.getElementById('${status.errors.fieldErrors[0].field}').focus(); 
       }; 
      </script> 
     </c:if> 
    </spring:bind> 

如果有错误,将找到的第一个fieldError和其ID,并设置焦点元素上

忘了说,美女是你不需要把这个代码放在每个输入的旁边。一时间为每一个JSP足够