【问题标题】:How to display <form:errors> outside <form:form> in Spring?如何在 Spring 中在 <form:form> 之外显示 <form:errors>?
【发布时间】:2013-02-11 19:35:08
【问题描述】:

我是 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 应该在 之外,所以我不能使用标签。

我该怎么做?

【问题讨论】:

  • 你不能把 div 放在表格里面但放在表格外面吗?
  • @BheshGurung 很遗憾,不,我必须在旧模板中修复表单。

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


【解决方案1】:

您可以捕获由 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 来做到这一点

【讨论】:

    【解决方案2】:

    是的,您可以在 form:form 标签之外使用 form:errors 标签

    <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>
    

    【讨论】:

      【解决方案3】:

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

      <form:errors path="*" />
      

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

      <form:errors path="" />
      

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

      【讨论】:

      • 我可以在
        标签之外使用 标签吗?
      • @ChristianVielma 不是。坏我,我忘记了你问题的主要目的......过去我记得面对这种情况,但解决方案并不干净,而是使用了一个肮脏的技巧来检查与 JSTL 的会话。
      猜你喜欢
      • 2011-10-23
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多