Spring Thymeleaf - Условные выражения в поле th:

Условное выражение (документы):

<tr th:class="${row.even}? 'even' : 'odd'"> 

Я хочу использовать условное выражение в поле th :. Но каждый раз, когда я пытаюсь это сделать, я получаю следующую ошибку:

* в привязках полей Spring разрешены только выражения переменных $ {...} или выражения выбора {...}


Например:

// This works fine.
<input type="text" th:value="${object.covered} ? 'yes' : 'no'" />

// This on the other hand, generates the error mentioned earlier.
// Which does make sense, cause it would otherwise generate invalid attributes.
<input type="text" th:field="${object.covered} ? 'yes' : 'no'" />

// Combining the two does not work.
<input type="text" th:field="${object.covered}" th:value="${object.covered} ? 'yes' : 'no'" />

По сути, я хочу создать поле th: field, значение которого определяется условным выражением.

Более конкретно, в моей реализации я хочу заполнить поле ввода числом (Java long) из моей модели. И если это число равно нулю или меньше, я хочу вместо этого использовать заполнитель.

// Ultimateley, what I want to achieve is something like this.
<input type="text" th:field="${person.age}" 
       th:value="${person.age} le 0 ? null : ${person.age}" 
       placeholder="age" />

Как использовать th: field и определить его значение с помощью условного выражения с помощью Spring Thymeleaf?

(Thymeleaf 2.1.5 и Spring Boot 1.4.2)


person BARJ    schedule 23.11.2016    source источник


Ответы (1)


Thymeleaf th:field генерирует 3 атрибута HTML id, name и value.

В вашем случае вместо использования th:field используйте id, name и placeholder, если возраст меньше нуля, как показано ниже.

<input th:if="${person.age > 0}" type="text" th:field="${person.age}" />
<input th:if="${person.age <= 0}" type="text" id="person.age" name="person.age" placeholder="age"/>
person faizi    schedule 23.11.2016