如何根据表格列名在表格单元格中添加下拉列表?
实现指定列单元格显示下拉列表的正确方案
你的思路方向是对的,但当前行数据的循环没有和列名数组建立关联,无法直接获取单元格对应的列名。需要通过索引匹配的方式来关联列名和单元格,具体实现如下:
完整修改后的JSP代码
<!DOCTYPE html> <html lang="en"> <head> <title>Drop Down List in Table Cell Depending on Name of Table Column</title> </head> <body> <table id="Sample Table" border="1"> <!-- 表头渲染 --> <tr> <c:forEach var="element" items="${requestScope.tableColumnNames}"> <th>${element}</th> </c:forEach> </tr> <!-- 表体渲染 --> <c:forEach var="rowItems" items="${requestScope.tableRowValues}"> <tr> <!-- 遍历行数据时,通过varStatus获取当前单元格的索引 --> <c:forEach var="cellValue" items="${rowItems}" varStatus="status"> <td> <!-- 仅在对应列名为'Table Column Two'时显示下拉框 --> <c:if test="${requestScope.tableColumnNames[status.index] == 'Table Column Two'}"> <select> <option value="optionYes">Yes</option> <option value="OptionNo">No</option> </select> </c:if> <!-- 非目标列显示原始值 --> <c:if test="${requestScope.tableColumnNames[status.index] != 'Table Column Two'}"> ${cellValue} </c:if> </td> </c:forEach> </tr> </c:forEach> </table> </body> </html>
关键说明
- 索引关联:在遍历行内单元格时,通过
varStatus="status"获取当前单元格的索引status.index,用这个索引从tableColumnNames数组中拿到对应的列名。 - 条件渲染:通过
<c:if>判断列名是否为'Table Column Two',是则渲染下拉列表,否则显示原始单元格值。 - 后端参数:你的原有参数定义无需修改:
String[] tableColumnNames = new String[]{"Table Column One","Table Column Two"}; String[][] tableRowValues = new String[][]{{"Sample Value", "Yes / No"}};
这样就能精准实现仅目标列单元格显示下拉列表的需求。
内容的提问来源于stack exchange,提问作者RobRoy
相关产品推荐
相关产品推荐

