Reputation: 3449
As you know, input
component has an attribute, checked
to whether mark the checkbox as enabled by default or not.
<input type="checkbox" name="mycheckbox" checked="checked"/>
To disable the checkbox by default, the checked
exception should be declared. Is it possible to set checked
attribute by a flag in Thymeleaf?
Upvotes: 36
Views: 113241
Reputation: 11
You can also use Logical and / or conditions with it like
th:checked="${business?.status == true or business?.status == null}"
Upvotes: 0
Reputation: 36
Thymeleaf th:checked
attribute is fixed-value attribute and it does not toggle the boolean value on checking or unchecking the box.
To toggle the boolean value for backend use, use 'th:field
attribute with the syntax: th:field="${object.attribute}"
A working code snippet that i used in my project is given here as exmple:
<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>
The toggled value shall be passed to controller on submit action.
Upvotes: 2
Reputation: 1496
If you have a form that is a model representation, say foo, and bar is a checkbox on your form and property of foo (e.g. foo.bar):
<form th:object="${foo}">
<input type="checkbox" th:field="*{bar}" th:value="*{bar}"></input>
</form>
...will also work and presents a succinct approach.
Upvotes: 0
Reputation: 1656
I faced problem for showing checkbox (tick mark on/off) in thymeleaf based on true or false value for the property. I solved it by following way.
Method in controller
@RequestMapping(value = "/test")
public String showCheckbox(Model model) {
boolean myBooleanVariable = false;
model.addAttribute("myBooleanVariable", myBooleanVariable);
return "sample-checkbox";
}
In HTML page:
<input type="checkbox" name="myBooleanVariable" th:checked="${myBooleanVariable}"/>
Upvotes: 0
Reputation: 12819
Neither suggested solutions worked for me.
This one worked:
th:checked="${#strings.equals(param.myRequestParameterXYZ, 'foobar')}"
Upvotes: 0
Reputation: 67
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.
Upvotes: 2
Reputation: 14855
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}" />
Upvotes: 73
Reputation: 3449
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>
Upvotes: 8