今天在开发中遇到了一个需求就是页面返回的时候让checkbox回显的,本来用JS来写并没有什么难度的。但是要使用Thymeleaf就变得有些复杂。thymeleaf有一个特性就是可以在标签中执行Java的方法。
<label class="checkbox-inline i-checks" th:each="data : ${list}">
<input th:attr="checked=${methodService.contains(data.id,proofsList)?true:false}" type="checkbox" name="proofs[]" th:value="${data.id}" id="inlineCheckbox1" />
</lable>
这里主要说明一下这个methodService.contains方法,它接受两个参数一个是id,一个是list
public class MethodService {
public boolean contains(String id,List<Proof> proofs){
System.out.println(proofs);
List<String> ids = new ArrayList<>();
for(Proof p: proofs){
ids.add(p.getId());
}
return (ids.contains(id));
}
}
这一步很重要 你要把这个调用的类放到Request域中,或者Session中,当然页面取值的时候也是不相同的。在Session中取值如下:session.proofsList
MethodService md = new MethodService();
mmap.put("methodService",md);
mmap.put("proofsList",proofsList);