【问题标题】:How to check conditionally an empty validation error message from Spring in JSP?如何在 JSP 中有条件地检查来自 Spring 的空验证错误消息?
【发布时间】:2013-02-23 09:58:47
【问题描述】:

我有一个简单的问题。我们可以显示 Spring 的验证器生成的错误消息,如下所示。

<form:errors path='edId' cssStyle='font-weight: normal; color: red;'/>

我正在使用诸如&lt;ul&gt;&lt;li&gt;&lt;/li&gt;&lt;/ul&gt; 和CSS 之类的HTML 来显示此类消息。因此,即使没有错误,也会不必要地显示空白项目符号。

因此,我需要有条件地在 JSP 页面上检查消息是否实际上是空白的,例如,

<c:if test="${not empty edIdError}">
    <form:errors path='edId' cssStyle='font-weight: normal; color: red;'/>       
</c:if>

但是测试这个if 条件需要将错误消息存储到JSP 上的某个变量中,例如&lt;c:set var="edIdError"/&gt;(例如),这对我来说似乎是不可能的。可能吗?有没有其他方法可以做到这一点?

无论如何,我只想在消息不为空时显示带有一些 HTML 和 CSS 的消息。我正在使用 Spring 3.2.0。

是的,我有一个不同的场景,不能使用this 方法。

【问题讨论】:

  • 这会让你的消息有点难看,但你不能把你的标签埋在你的spring消息中吗?因此,您的 message.properties 将打印出“
  • 对不起,您忘记输入 X
  • ”,而不是“对不起,您忘记输入 X”。
  • @Joe - 在问这个问题之前我也想过同样丑陋的方式。我最终遇到了非常明显的方式。谢谢。
  • 标签: spring jsp jstl el


    【解决方案1】:

    我忘记了关于&lt;c:set&gt; JSTL 标签的一个简单的事情。这是一个容器标签。因此,显然可以将&lt;form:errors&gt; 标签包含在其中,如下所示。

    <c:set var="edIdError"><form:errors path='edId'/></c:set>
    

    它将变量edIdError 设置为来自Spring 的实际错误消息。所以,现在可以有条件地检查它是否为空(和空),

    <c:if test="${not empty edIdError}">
        <form:errors path='edId' cssStyle='font-weight: normal; color: red;'/>
    </c:if>
    

    在这种情况下,不需要使用&lt;c:set&gt; 标记的value 属性。我可以根据需要使用 HTML 并在 &lt;c:if&gt; 条件块中应用 CSS。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签