在Thymeleaf中执行Java方法,实现CheckBox的自选中

今天在开发中遇到了一个需求就是页面返回的时候让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);

猜你喜欢

转载自blog.csdn.net/qq_24532581/article/details/85320870