如何在Spring中的<form:form>外面显示<form:errors>?</form:form> </form:errors>

时间:2013-02-11 19:35:09

标签: spring forms jsp spring-mvc error-handling

我是Spring的新手,我在尝试显示表单错误方面遇到了一些麻烦。

我有以下表格:

<form:form action="loginform.html" commandName="loginForm" onsubmit="goWait();">
<table><tr>
           <td>User Name: </td>
           <td><form:input path="userName" /></td>
        </tr>
        <tr> 
           <td>Password: </td>
           <td><form:password path="password"/> </td>
        <tr>
            <td colspan="2">
             <input type="submit" value="Login" style="butt-login">
            </td>
        </tr>
</table>                                                        
</form:form>

可以看出,表单由验证它的LoginForm Bean支持。

我希望在此表单之外显示验证中的所有错误。像这样:

<div>
   <ul>
      <li><form:errors path="userName"/></li>
      <li><form:errors path="password"/></li>
   </ul>
</div>

这个div应该在外面,所以我不能使用标签。

我该怎么做?

3 个答案:

答案 0 :(得分:4)

您可以捕获由form:errors生成的html并在表单后面的某处显示:

<form:form ...>
    <c:set var="err">
        <form:errors path="*" element="div" id="err" cssClass="hidden" />
    </c:set>
</form:form>

....

<c:out value="${err}" />

如果你想在表单之前显示错误,你可以用一点jQuery做到这一点

答案 1 :(得分:3)

是的,您可以使用表单:表单外的错误标记:表单标记

<form:errors path="yourBindedObject.*" />
<form:form action="loginform.html" commandName="loginForm" onsubmit="goWait();">
<table><tr>
           <td>User Name: </td>
           <td><form:input path="userName" /></td>
        </tr>
        <tr> 
           <td>Password: </td>
           <td><form:password path="password"/> </td>
        <tr>
            <td colspan="2">
             <input type="submit" value="Login" style="butt-login">
            </td>
        </tr>
</table>                                                        
</form:form>

答案 2 :(得分:0)

如果您想要显示与任何字段相关联的所有错误,只需将星标传递给path属性。

<form:errors path="*" />

但是如果你想显示全局错误消息,只需传递一个空字符串:

<form:errors path="" />

更多相关信息:http://www.mkyong.com/spring-mvc/spring-mvc-form-errors-tag-example/