Thymeleaf - 如何有条件地向输入添加选中的属性
Thymeleaf - How to add checked attribute to input conditionally
如您所知,input
组件有一个属性,checked
是否将复选框标记为默认启用。
<input type="checkbox" name="mycheckbox" checked="checked"/>
要默认禁用复选框,应声明 checked
异常。是否可以通过 Thymeleaf 中的标志设置 checked
属性?
经过一番挖掘,我找到了解决方案。为此目的有 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 官方文档
http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#fixed-value-boolean-attributes
th:checked
被视为固定值布尔属性。
<input type="checkbox" name="active" th:checked="${user.active}" />
其中 user.active
应该是 boolean
。
所以在你的情况下应该像 Andrea 提到的那样,
<input type="checkbox" name="mycheckbox" th:checked="${flag}" />
您可以有条件地将 checked 属性添加到 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="${#strings.equals(param.myRequestParameterXYZ, 'foobar')}"
我在根据 属性 的真值或假值在 thymeleaf 中显示复选框(勾号 on/off)时遇到问题。我用下面的方法解决了。
控制器中的方法
@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 是您表单上的一个复选框,并且 属性 of foo(例如 foo.bar):
<form th:object="${foo}">
<input type="checkbox" th:field="*{bar}" th:value="*{bar}"></input>
</form>
...也将起作用并提供简洁的方法。
Thymeleaf th:checked
属性是 fixed-value 属性,它不会在选中或取消选中该框时切换布尔值。
要切换后端使用的布尔值,请使用 '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>
切换值应在提交操作时传递给控制器。
如您所知,input
组件有一个属性,checked
是否将复选框标记为默认启用。
<input type="checkbox" name="mycheckbox" checked="checked"/>
要默认禁用复选框,应声明 checked
异常。是否可以通过 Thymeleaf 中的标志设置 checked
属性?
经过一番挖掘,我找到了解决方案。为此目的有 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 官方文档
http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#fixed-value-boolean-attributes
th:checked
被视为固定值布尔属性。
<input type="checkbox" name="active" th:checked="${user.active}" />
其中 user.active
应该是 boolean
。
所以在你的情况下应该像 Andrea 提到的那样,
<input type="checkbox" name="mycheckbox" th:checked="${flag}" />
您可以有条件地将 checked 属性添加到 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="${#strings.equals(param.myRequestParameterXYZ, 'foobar')}"
我在根据 属性 的真值或假值在 thymeleaf 中显示复选框(勾号 on/off)时遇到问题。我用下面的方法解决了。
控制器中的方法
@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 是您表单上的一个复选框,并且 属性 of foo(例如 foo.bar):
<form th:object="${foo}">
<input type="checkbox" th:field="*{bar}" th:value="*{bar}"></input>
</form>
...也将起作用并提供简洁的方法。
Thymeleaf th:checked
属性是 fixed-value 属性,它不会在选中或取消选中该框时切换布尔值。
要切换后端使用的布尔值,请使用 '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>
切换值应在提交操作时传递给控制器。