如何在前端使用复选框展示员工拥有的福利,如果有,则默认选中,否则不选中

首先,在控制层得到所有的福利集合,员工对应的福利集合,代码如下

List<Welfare> welfareList = welfareService.getAllWelfares(); // 获取所有的福利集合
List<Welfare> empWelfareList = emp.getWelfareList(); // 获取员工拥有的福利的集合

然后,可以在控制层把empWelfareList集合中的每一个福利的名称取出来,放到一个新的集合中,并且绑定request对象,代码如下

List<String> welfareNameList = new ArrayList<String>(); // 存放员工拥有福利的名称
for (int i = 0; i < empWelfareList.size(); i++) {
    welfareNameList.add(empWelfareList.get(i).getWelfare_name());
}
request.setAttribute("welfareList", welfareList);
request.setAttribute("welfareNameList", welfareNameList);

然后在jsp页面进行

<tr>
	<td align="right" style="font:16px bold 微软雅黑">福利</td>
	<td style="font:16px bold 微软雅黑;width: 160px;height: 20px">
        <!-- 将员工福利名称集合转换为字符串,并通过set设置到变量empWelfareList中 -->
        <c:set var="empWelfareString" 
           value="<%=(request.getAttribute(\"welfareNameList\")).toString() %>"/>
        <!-- foreach循环遍历所有的福利 -->
        <c:forEach var="welfare" items="${welfareList }">
	        <c:choose>
               <!-- 当循环的福利的名称是员工福利字符串的子字符串,则复选框选中 -->
		       <c:when test="${fn:contains(empWelfareString,welfare.welfare_name) }">
                    <input type="checkbox" value="${welfare.welfare_id }" checked/>
                        ${welfare.welfare_name }
			   </c:when>
               <!-- 否则说明员工没有该福利,复选框不选中 -->
			   <c:otherwise>
		           <input type="checkbox" value="${welfare.welfare_id }" />
                       ${welfare.welfare_name }
			   </c:otherwise>
		    </c:choose>
	    </c:forEach>
    </td>
</tr>

最后效果如下图:

如何在前端使用复选框展示员工拥有的福利,如果有,则默认选中,否则不选中