當後端將多選框值以逗號分隔字符串存入數據庫(如 "1,3,5"),前端編輯頁需根據該字符串恢復勾選狀態。使用 JSTL fn:contains 可輕鬆實現。
<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="https://java.sun.com/jsp/jstl/functions" %>
<!-- 假設後端傳入 statusList 為 "1,3,5" -->
<c:set var="statusStr" value="${statusList}" />
<input type="checkbox" name="status" value="1"
<c:if test="${fn:contains(statusStr, '1')}"/>checked</c:if> /> 選項1
<input type="checkbox" name="status" value="2"
<c:if test="${fn:contains(statusStr, '2')}"/>checked</c:if> /> 選項2
<input type="checkbox" name="status" value="3"
<c:if test="${fn:contains(statusStr, '3')}"/>checked</c:if> /> 選項3
fn:contains(str, substr):判斷 str 是否包含 substr,返回 boolean。<c:if test="...">:條件為真時輸出 checked 屬性(HTML5 布爾屬性,無需值)。List<String>,可直接用 fn:contains(statusList, '1')(List 會自動轉為字符串比較),或改用 ${statusList.contains('1')}(EL 3.0+)。model.addAttribute("statusList", entity.getStatusStr())。String.join(",", list) 存回數據庫。此方案無需在 JSP 嵌入 Java 代碼,符合前後端分離最佳實踐。