上一段代码中 th:if 都不符合条件 为什么 th:disabled="${true}" 会生效?
时间: 2023-11-19 13:04:26 浏览: 146
if条件满足,代码却不执行
5星 · 资源好评率100%
在你提供的代码中,`th:disabled`属性被设置为`${true}`,这意味着它的值将始终为`true`,无论`th:if`表达式的条件是否成立。因此,即使`th:if`表达式的条件不成立,`th:disabled`属性仍然会被设置为`true`,因此文本框将被禁用。
需要注意的是,如果你将`th:disabled`属性设置为`${false}`,或者不设置`th:disabled`属性,那么即使`th:if`表达式的条件不成立,文本框仍然会启用。这是因为HTML规范中规定,如果`disabled`属性的值为`false`或为空,那么元素将启用。
因此,如果你想确保`th:disabled`属性的值取决于`th:if`表达式的条件,你可以使用以下代码:
```
<textarea name="drawDescribed" id="drawDescribed"
th:text="${spotCheck.drawDescribed}"
class="form-control" style="resize: none;"
rows="5" maxlength="512" placeholder="必填,最大限制512字符"
th:if="${currentProcess == null or currentProcess.userId != userId or currentProcess.currentNode != 106}"
th:disabled="${currentProcess != null and currentProcess.userId == userId and currentProcess.currentNode == 106}">
</textarea>
```
在这个修正后的代码中,`th:disabled`属性的值取决于`th:if`表达式的条件。如果`th:if`表达式的条件不成立,`th:disabled`属性的值将为`false`,文本框将启用。如果`th:if`表达式的条件成立,`th:disabled`属性的值将取决于`currentProcess`对象的属性值。
阅读全文