代码之家  ›  专栏  ›  技术社区  ›  dtrunk

thymeleaf/spring:如何检查消息属性是否存在

  •  1
  • dtrunk  · 技术社区  · 6 年前

    是否可以检查消息属性是否存在?

    示例:我想删除仅包含消息属性的循环中的可折叠div元素。

    <div th:each="payment : ${paymentList}">
        <input type="radio" data-toggle="radio-collapse" data-target="#collapse1" [...] /> [...]
        <div id="collapse1" th:utext="#{|payment.${payment.id}.additionalInfo|}" [...]>
            Hello, world!
        </div>
    </div>
    

    如果没有付款的附加信息,则不需要元素。 假设我们有身份证 DIRECT_DEBIT 我是说, PAYPAL SAFERPAY 以及以下消息属性:

    payment.DIRECT_DEBIT=Direct debit
    payment.DIRECT_DEBIT.additionalInfo=Direct debit info text...
    payment.PAYPAL=PayPal
    payment.PAYPAL.additionalInfo=PayPal info text...
    payment.SAFERPAY=Saferpay
    

    如您所见,没有additioninfo消息属性 保险柜 是的。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Metroids    6 年前

    你应该使用 #messages 对象来检查消息是否存在。例如:

    th:if="${#messages.msgOrNull('payment.' + payment.id + '.additionalInfo') != null}"
    
    <div id="collapse1" th:if="${#messages.msgOrNull('payment.' + payment.id + '.additionalInfo') != null}" th:utext="#{|payment.${payment.id}.additionalInfo|}" [...]>
        Hello, world!
    </div>
    
        2
  •  -1
  •   Flocke    6 年前

    仅当元素不为空且不等于空字符串时,才可以使用th:if添加该元素(我不知道如何实现该对象)。

    <div id="collapse1"
      th:if="${payment.${payment.id}.additionalInfo != null && payment.${payment.id}.additionalInfo != ''}"
      th:utext="#{|payment.${payment.id}.additionalInfo|}" [...]
    >
        Hello, world!
    </div>
    

    …您还应该更改id属性。在你的执行中,可能有多个id为“collapse1”的元素。

    如果不想显示输入字段,请使用th:block元素并将th:if属性放在其中:

    <div th:each="payment : ${paymentList}">
        <th:block
          th:if="${ ... && ... }"
        >   
            <input ...>
            <div ...>
            </div>
        </th:block>
    </div>