遇到以下问题时,我正在使用Spring和Thymeleaf:我需要一个 Form 对象,该对象具有一个项目列表( Item )作为属性;我正在使用html表单打印项目的名称,并为每个项目生成一个复选框(任何复选框的值都是相应项目的ID)。
该表单可以正常工作,向控制器发送与选中的复选框相对应的项目ID列表。
但是,现在,我试图在条件出现时检查某些复选框(如果itemIds(它是一个列表,包含当前项目的ID))。为此,我正在使用:
th:checked="${#lists.contains(itemIds, item.id)}"/>
但是它不起作用(所有复选框都未选中)。 我还尝试了“虚拟测试”:
th:checked="${1 == 1 ? 'checked' : ''}"/>
但是,再次,所有复选框都保持未选中状态。如您在呈现的HTML的示例中所见,“ checked”属性将被忽略:
<input type="checkbox" value="12" class="chkCheckBox" id="ids1" name="ids">
我在做什么错?我在这里想念什么?
form.html
<form th:action="@{${uriBase}+'/new/' + ${date}}"
method="POST" th:object="${form}">
<div class="table-responsive">
<table class="table">
<thead class=" text-primary">
<tr>
<th>Name</th>
<th><input type="checkbox" th:id="checkAll"/>Check</th>
</tr>
</thead>
<tbody>
<tr th:each="item : ${items}">
<td th:text="${item.name}"></td>
<td>
<input type="checkbox" th:field="*{ids}"
th:value="${item.id}" th:class="chkCheckBox"
th:checked="${#lists.contains(itemIds, item.id)}"/>
</td>
</tr>
</tbody>
</table>
<button type="submit" class="btn btn-primary pull-right">Submit</button>
<div class="clearfix"></div>
</div>
</form>
表单类
public class Form implements Serializable {
private List<Long> ids;
//getter and setter
}
谢谢。
答案 0 :(得分:1)
我也一直在为此苦苦挣扎。如Xaltotun所述,如果使用th:field
,它将覆盖checked和value选项,因为它正试图从field/form
获取value和checked选项。
如果将其更改为th:name
,它应该可以按照您想要的方式工作...
但是,此forum似乎可以与th:feild
一起使用。
答案 1 :(得分:0)
据我了解,您的帖子中有2个问题:
虚拟示例不正确。
th:checked =“ $ {1 == 1?'checked':''}”
实际上,该值必须为true或false而不是“选中”。如果您尝试
<pre>newarray: {{ newarray | json }}</pre>
<pre>tbarArray: {{ tbarArray | json }}</pre>
它将起作用。