Duvidas no jstl na tag forEach

2 respostas
Hermanitto

Olá pessoal,
alguem poderia me tirar uma duvida???

esse forEach do jstl, eu sempre apanho com ele, e acho q ja é hora deu conseguir entender ele de verdade

minha duvida é o seguinte:

qndo eu coloco

<c:forEach var="nome" items="${list}">
  <tr><td>${nome}</td></tr>    
  </c:forEach>

esse meu items="${list}", tem que ser obrigatóriamente o nome da minha coleção que eu quero iterar?

olha como q eu fiz, eu criei um formulario normal com um edit soh, soh pra chamar o meu servlet
ae no servlet eu crio um ArrayList, blz!

qndo eu mando para a pagina de resposta, ela não consegue criar o meu forEach,
porque será?

o codigo do servlet ta ae

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                response.setContentType("text/html");
                String nome = request.getParameter("nome");
                HttpSession session = request.getSession();
                session.setAttribute("nome", nome);
	    	  	ArrayList<String> list = new ArrayList<String>();
	    	  	list.add(nome);
	    	  	list.add("Hermano");
	    	  	list.add("Karine");
	    	  	list.add("Fulano");
	    	  	request.setAttribute("nome", list);
	            RequestDispatcher view = request.getRequestDispatcher("result.jsp");
	            view.forward(request, response);
	            System.out.println("usou o servlet controller");
	}

2 Respostas

andreiribas

como setou no response a lista com nome “nome”, você tem que pegar ela pelo jstl como ${nome}, pois o nome do parâmetro é esse.

request.setAttribute("nome", list);

e no jsp:

<c:forEach var="nome" items="${nome}">  
    <tr><td>${nome}</td></tr>      
</c:forEach>
francislon

&lt;c:forEach var="nome" items="${nome}"&gt; &lt;tr&gt;&lt;td&gt;${nome}&lt;/td&gt;&lt;/tr&gt; &lt;/c:forEach&gt;

O forEach funciona da seguinte forma:

  • Ele percorre um determinado conjunto de itens, do primeiro até o ultimo. O nome desse conjunto de itens vc seta no atributo “items” do forEach. No seu exemplo, como o nome de sua lista de elementos era “nome”, vc colocou " items= “${nome}” ".
  • A cada iteração no laço ele atribui o elemento da lista à variavel que vc coloca no atributo “var”, ou seja, a cada iteração do forEach o atributo “var” receberá o elemento atual da lista.

Deu pra entender ou eu confundi mais? :shock:

Criado 2 de março de 2008
Ultima resposta 2 de mar. de 2008
Respostas 2
Participantes 3