[JSP][EL][taglib] EL w c:forEach oraz nadmiarowe entery

0

Witam,

mam taki kod:

<c:forEach var="value" items="<%=list%>">
    <c:choose>
      <c:when test="${(value mod 2) eq 0}">
        <b>To jest parzyste: ${value}<b/><br/>
      </c:when>
      <c:otherwise>
        <b>To jest nieparyste: ${value}<b/><br/>
      </c:otherwise>
    </c:choose>
  </c:forEach>

Problemy:
1.Nie moge w items wykorzystac EL w postaci ${list}, cokolwiek tam wsadze, collection, hashmap,list Object[] petla sie nie wykonuje.
2.na wygenerowanej stronie wystepuje masa niepotrzebnych nowych linii, tak jakby miedzy tagami z taglibu byly tworzone, da sie jakos to wylaczyc?</b></b>

0
  1. nie
  2. sprawdź czy przed wysłaniem listy ma ona niezerową wielkość.
0

W jaki sposob tworzysz ta liste? Jesli nie ma jej w zadnym obiekcie ktory moze skladowac atrybuty, a jest to tylko zmienna za scritpletu, to nie mozesz jej uzyc. Np:

<html>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<body>
<%
int[] list = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
%>
<c:forEach var="value" items="${list}">
    <c:choose>
      <c:when test="${(value mod 2) eq 0}">
        <b>To jest parzyste: ${value}</b><br/>
      </c:when>
      <c:otherwise>
        <b>To jest nieparyste: ${value}</b><br/>
      </c:otherwise>
    </c:choose>
</c:forEach>
</body>
</html>

Powyzej, EL nie zna atrybutu "list". Przeciwnie do:

<html>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<body>
<%
int[] list = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
request.setAttribute("list", list);
%>
<c:forEach var="value" items="${list}">
    <c:choose>
      <c:when test="${(value mod 2) eq 0}">
        <b>To jest parzyste: ${value}</b><br/>
      </c:when>
      <c:otherwise>
        <b>To jest nieparyste: ${value}</b><br/>
      </c:otherwise>
    </c:choose>
</c:forEach>
</body>
</html>

Moze to jest problemem? Dany atrybut musi znajdowac sie w page, request, session, application scope.

Co do wielu spacji, rzeczywiscie powyzszy kod generuje ich wiele, jesli ci to nie pasuje, to jak utworzysz stronke jako dokument XML (jspx) to spacje nie sa generowane.

PS. Znaczniki w twoim poscie byly niepoprawne.


0

Okazuje sie ze tak jest gdy zmienna jest tworzona w <% %>.
Jesli po deklaracji dodam linijke np. request.setAttribute("list",v); dziala :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1