如何在JSP中使用複選框展示員工擁有的福利,如果有,則默認選中,否則不選中

首先,在控制層得到所有的福利集合,員工對應的福利集合,代碼如下

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>

最後效果如下圖:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章