Controller/Servlet 將分類列表放入請求域:
List list = categoryService.findAll();
request.setAttribute("catList", list); // 或 ModelMap / ModelAndView
<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<select name="categoryId">
<option value="0">請選擇分類</option>
<c:forEach items="${catList}" var="cat">
<option value="${cat.id}">${cat.name}</option>
</c:forEach>
</select>
<s:select name="categoryId" list="catList" listKey="id" listValue="name" headerKey="0" headerValue="請選擇分類" />
<select th:field="*{categoryId}">
<option value="0">請選擇</option>
<option th:each="cat : ${catList}" th:value="${cat.id}" th:text="${cat.name}"></option>
</select>
<select name="categoryId">
<option value="0">請選擇</option>
<%
List list = (List) request.getAttribute("catList");
for (Category c : list) {
%>
<option value="<%=c.getId()%>"><%=c.getName()%></option>
<%
}
%>
</select>
核心:**後端傳 List,前端標籤庫/模板引擎遍歷生成 option**,手動拼接字串易錯且難維護。