Thymeleaf - Как добавить проверенный атрибут для ввода условно
Как Вам известно, input
компонент имеет атрибут, checked
отмечать ли флажок как включенный по умолчанию или нет.
<input type="checkbox" name="mycheckbox" checked="checked"/>
Чтобы отключить флажок по умолчанию, checked
исключение должно быть объявлено. Можно ли установить checked
приписать флаг в тимелии?
8 ответов
Согласно официальной документации тимьяна
http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html
th:checked
рассматривается как логический атрибут с фиксированным значением.
<input type="checkbox" name="active" th:checked="${user.active}" />
куда user.active
должен быть boolean
,
Так что в вашем случае это должно быть, как упомянул Андреа,
<input type="checkbox" name="mycheckbox" th:checked="${flag}" />
Немного покопавшись, я нашел решение. Есть th:checked
атрибут для этой цели.
Это работает:
<input type="checkbox" name="mycheckbox" th:checked="${flag} ? 'checked'">
Это не удается:
<input type="checkbox" name="mycheckbox" th:checked="${flag} ? 'checked' : ''">
Если checked=""
установлен в input
компонент, он помечен отмеченным. Этот метод действителен для пользовательских атрибутовth:attr
также. Рассмотрим следующий пример:
<p th:attr="customattr=${flag}?'attr'></p>
Если flag
это правда, он заменен на:
<p customattr="attr"></p>
Если flag
ложно, это заменяется на:
<p></p>
Вы можете условно добавить проверенный атрибут к радиовходу в thymeleaf, как показано ниже:
<input type="radio" th:checked="${sales.sales_head.sales_type} == CREDIT" class="sales_type" value="CREDIT" name="sales_type" >
Здесь, если sales_type - CREDIT, радио будет проверено. В противном случае это останется непроверенным.
Лист тимьяна
th:checked
атрибут является атрибутом с фиксированным значением, и он не переключает логическое значение при установке или снятии флажка.
Чтобы переключить логическое значение для внутреннего использования, используйте '
th:field
атрибут с синтаксисом:
th:field="${object.attribute}"
Фрагмент рабочего кода, который я использовал в своем проекте, приведен здесь в качестве примера:
<form action="#" th:action="@{/editNotificationAlerts}" th:object="${userObject}" method="post">
<label for="sendEmailNotification">Notify At 80</label>
<input type="checkbox" name="sendEmailNotification" id="sendEmailNotification" th:field="${userObject.sendEmailNotification}">
<div>
<input type="submit" value="Submit"/>
</div>
</form>
Переключенное значение должно быть передано контроллеру при отправке.
Ни одно из предложенных решений не помогло мне.
Этот работал:
th:checked="${#strings.equals(param.myRequestParameterXYZ, 'foobar')}"
Вы также можете использовать с ним логические и/или условия, например
th:checked="${business?.status == true or business?.status == null}"
У меня возникла проблема с отображением флажка (отметка вкл / выкл) в тимелеафе на основе истинного или ложного значения свойства. Я решил это следующим образом.
Метод в контроллере
@RequestMapping(value = "/test")
public String showCheckbox(Model model) {
boolean myBooleanVariable = false;
model.addAttribute("myBooleanVariable", myBooleanVariable);
return "sample-checkbox";
}
На странице HTML:
<input type="checkbox" name="myBooleanVariable" th:checked="${myBooleanVariable}"/>
Если у вас есть форма, которая является представлением модели, скажем, foo, а bar - это флажок в вашей форме и свойстве foo (например, foo.bar):
<form th:object="${foo}">
<input type="checkbox" th:field="*{bar}" th:value="*{bar}"></input>
</form>
... также будет работать и представляет собой лаконичный подход.