如何在前端使用复选框展示员工拥有的福利,如果有,则默认选中,否则不选中
首先,在控制层得到所有的福利集合,员工对应的福利集合,代码如下
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>
最后效果如下图:
、