Значение элемента в цикле foreach JSTL не работает в портлете

Учитывая следующий код портлета:

ArrayList nameList = new ArrayList();
nameList.add("Willi Willisch");
nameList.add("Seppi Seppisch");

renderRequest.setAttribute("names", nameList);

И следующий код JSP:

<c:forEach var="aName" items="${names}">
    <tr>
       <td>${aName} </td>
    </tr>

</c:forEach>

Распечатывает:

${aName}
${aName}

Я понятия не имею, почему $(aName) не оценивается. Циклы forEach работают, потому что ${aName} выводится дважды....


person Daniel Kreiseder    schedule 29.03.2010    source источник
comment
Ради интереса, что делает <c:out value="${aName}"/>?   -  person skaffman    schedule 29.03.2010
comment
<c:out value="${aName}"/> работает!! Но разве ${aName} тоже не должно работать?   -  person Daniel Kreiseder    schedule 29.03.2010


Ответы (1)


<c:out value="${aName}"/> работает!! Но разве ${aName} тоже не должно работать?

Таким образом, «EL в тексте шаблона» не работает? Это может иметь одну или несколько из следующих причин:

  1. Рассматриваемый сервер приложений не поддерживает JSP 2.0.
  2. web.xml не объявлен как Servlet 2.4 или выше.
  3. @page настроен с isELIgnored=true.
  4. web.xml настроен с <el-ignored>true</el-ignored> в <jsp-config>.

Чтобы исправить то или иное, очевидно, выполните:

  1. Обновите сервер или используйте вместо него JSTL c:out и живите с ним.
  2. Предпочтительно объявить web.xml последней версией Servlet API, поддерживаемой сервером приложений.
  3. Удалите атрибут isELIgnored=true.
  4. Удалите запись <el-ignored>true</el-ignored>.
person BalusC    schedule 29.03.2010