【问题标题】:Spring MVC Error MessagesSpring MVC 错误消息
【发布时间】:2010-11-22 19:07:51
【问题描述】:

Spring MVC 错误消息

你好,春季研究员,

我有一个表单,一旦提交就由 Spring Validation 验证。如果验证失败,表单上的每个字段都可能包含多个错误消息,因此错误消息显示在字段下方,而不是旁边。这是代码sn-p。

<tr>
    <td><form:input path="name" /></td>
</tr>
<tr>
    <td>
        <form:errors path="name*" />
    </td>
</tr>

请注意,路径值末尾有一个星号,表示必须显示name 的所有错误消息。

如您所见,问题在于,如果没有错误消息,页面上会出现一个额外的行,让用户觉得不合适。上面的代码是一个过于简化的版本,所以实际代码中有很多东西,这使我无法在包含该字段的标签内移动&lt;form:errors&gt;标签。

有没有办法查明是否有任何消息与 JSP 级别上的给定路径相关联?基本上,我想做以下事情:

<c:if test="${what do I write here?}">
    <tr>
        <td>
            <form:errors path="name*" />
        </td>
    </tr>
</c:if>

谢谢!

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    你可以这样做(注意bind 来自spring taglib):

    <spring:bind path = "name*">
        <c:if test="${status.error}"> 
            <tr> 
                <td> 
                    <form:errors path="name*" /> 
                </td> 
            </tr> 
        </c:if> 
    </spring:bind>
    

    【讨论】:

      【解决方案2】:

      我通过这样做解决了你的问题:

      <table>
          <form:errors path="firstName">
          <tr>
              <td colspan="2">
                  <form:errors path="firstName"/>
              </td>
          </tr>
          </form:errors>
          <tr>
              <td><form:label path="firstName"><spring:message code="helloworld.label.firstName"/></form:label></td>
              <td><form:input path="firstName"/></td>
          </tr>
      </table>
      

      只有在路径上有错误时才会评估错误标签正文。

      【讨论】:

        【解决方案3】:

        最简单的答案是不使用表格进行页面布局。使用 div 标签可以完全缓解这个问题,因为如果设置为隐藏,div 是完全无量纲的。

        【讨论】:

        • 我考虑过使用
          ,但它有其自身的问题,这使得无法将每一列设置为相同的宽度,除非您知道在渲染期间其中文本的最长像素长度.
        • 这就是为什么将 div 放在父 div 中的原因。您可以根据您的样式表使用最大的封装 div 调整父 div 的大小,其余封装的 div 在父级中流动。
        • 或者将文本包裹在嵌套的 div 中并保持父 div 的静态宽度。我将提交,如果您不遵守 w3c 标准,IE 在处理高度和宽度的一致性方面存在版本问题。在这上面浪费了这么多时间......如果只有企业默认使用 FF :)。
        猜你喜欢
        相关资源
        最近更新 更多
        热门标签