Вы неверно ссылаетесь на значение items
. Taglibs / EL и скриптлеты не используют одну и ту же область видимости переменных. По сути, вы печатаете columnHeaders.toString()
в атрибуте items
и говорите c:forEach
, чтобы перебрать его. Вместо этого вам нужно поместить его в область запроса (предпочтительно с помощью сервлета) и использовать EL ${}
обычным способом:
<%
String[] columnHeaders = {"Banana", "Apple", "Carrot", "Orange", "Lychee", "Permisson"};
request.setAttribute("columnHeaders", columnHeaders);
%>
<c:forEach var="columnHeader" items="${columnHeaders}">
<td>
<c:out value="${columnHeader}" />
</td>
</c:forEach>
Кроме того, ${header}
- это зарезервированная переменная EL, относящаяся к карте заголовка запроса (см. неявные объекты в EL ), вам нужно переименовать ее во что-то еще, например ${columnHeader}
в пример выше.
Смотри также:
Не связанный с конкретной проблемой, заголовки таблицы должны быть представлены в HTML как <th>
, а не <td>
.