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>

... также будет работать и представляет собой лаконичный подход.

Другие вопросы по тегам