Thymeleaf / Spring: как проверить, существует ли свойство сообщения - PullRequest
0 голосов
/ 27 июня 2018

Можно ли проверить, существует ли свойство сообщения?

Пример. Я хотел бы удалить разборный элемент 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

Как вы можете видеть, для сообщения SAFERPAY.

отсутствует свойство сообщения71.

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Вы должны использовать объект #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>
0 голосов
/ 27 июня 2018

Вы можете использовать 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. В вашей реализации может быть более одного элемента с идентификатором «collapse1».

Если вы также не хотите показывать поле ввода, используйте элемент th: block и поместите в него атрибут th: if:

<div th:each="payment : ${paymentList}">
    <th:block
      th:if="${ ... && ... }"
    >   
        <input ...>
        <div ...>
        </div>
    </th:block>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...