Thymeleaf - 如何有条件地将checked属性添加到输入

mty*_*urt 24 html html-input thymeleaf

如您所知,input组件具有一个属性,checked是否将复选框标记为默认启用.

<input type="checkbox" name="mycheckbox" checked="checked"/>
Run Code Online (Sandbox Code Playgroud)

要在默认情况下禁用该复选框,checked应声明该异常.是否可以checked通过Thymeleaf中的旗帜设置属性?

Far*_*ook 51

根据官方百里叶文件

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}" />
Run Code Online (Sandbox Code Playgroud)

哪里user.active应该是boolean.

所以在你的情况下它应该像Andrea所说的那样,

<input type="checkbox" name="mycheckbox" th:checked="${flag}" />
Run Code Online (Sandbox Code Playgroud)

  • 复选框是否不适用于 th:field 属性?我正在添加 th:field 并且每次后端收到的值为 false 时? (2认同)

mty*_*urt 7

挖了一点之后,我找到了解决方案.有th:checked这个目的的属性.

这有效:

<input type="checkbox" name="mycheckbox" th:checked="${flag} ? 'checked'">
Run Code Online (Sandbox Code Playgroud)

这失败了:

<input type="checkbox" name="mycheckbox" th:checked="${flag} ? 'checked' : ''">
Run Code Online (Sandbox Code Playgroud)

如果checked=""设置为input组件,则标记为已选中.此方法也适用于自定义属性th:attr.考虑以下示例:

<p th:attr="customattr=${flag}?'attr'></p>
Run Code Online (Sandbox Code Playgroud)

如果flag是真的,它将替换为:

<p customattr="attr"></p>
Run Code Online (Sandbox Code Playgroud)

如果flag是假,则将其替换为:

<p></p>
Run Code Online (Sandbox Code Playgroud)

  • 只需`th:checked = $ {flag}`,对于checked属性更简洁 (3认同)
  • @Andrea是否有可能进行比较,即`th:checked ="$ {model.myField == null}"`? (3认同)