Thymeleaf - How to add checked attribute to input conditionally

After digging a little, I found out the solution. There is th:checked attribute for that purpose.

This works:

<input type="checkbox" name="mycheckbox" th:checked="${flag} ? 'checked'">

This fails:

<input type="checkbox" name="mycheckbox" th:checked="${flag} ? 'checked' : ''">

If checked="" is set to input component, it's marked checked. This method is valid for custom attributesth:attr also. Consider following example:

<p th:attr="customattr=${flag}?'attr'></p>

If flag is true, it's replaced with:

<p customattr="attr"></p>

If flag is false, it's replaced with:

<p></p>

According to the official thymeleaf documentation

http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#fixed-value-boolean-attributes

th:checked is considered as a fixed-value Boolean attribute.

<input type="checkbox" name="active" th:checked="${user.active}" />

Where user.active should be a boolean.

So in your case it should be as Andrea mentioned,

<input type="checkbox" name="mycheckbox" th:checked="${flag}" />

You can conditionally add checked attribute to radio input in thymeleaf as below:

 <input type="radio" th:checked="${sales.sales_head.sales_type} == CREDIT" class="sales_type" value="CREDIT"  name="sales_type" >

Here if sales_type is CREDIT the radio will be checked. Otherwise it remains unchecked.