1

Since I have a forEach loop nested inside another that doesn't work for me, I read that I have to use methods to access variables in jsp, but my method needs the index i to read the array element and I pass it to it as an argument, then my forEach turns into a simple for, but the parliamentari.size() variable is not recognized, the jsp variable in java how does it transform?

for(int i = 0; i < ${parlamentare.getPk().getCircoscrizione();}; 
i++) { %>  

Parlamentare.java

public String getElement(String[] a, int n) {
    return a[n] ;
}

ListaParlamentari.java

public ModelAndView doPost()//(Parlamentare parlamentare) 
{   
    ModelAndView mv= new ModelAndView();

    List<Parlamentare> parlamentari =parlamRepo.findAll();
    mv.addObject("parlamentari",parlamentari);
    mv.setViewName("lista_parlamentari.jsp");
    return mv;
}

lista_parlamentari.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="com.giuggiola.entity.Parlamentare" %>

<!DOCTYPE html>

<html>
<head>
<meta charset="ISO-8859-1">
<title>Lista parlamentari</title>

</head>
<body>    
 
 <h2>Lista dei parlamentari:</h2>
<form method="POST" action="lista_parlamentari.jsp">
 <c:forEach items="${parlamentari}" var="parlamentare">
 <table>
<tr>
<td>Nome:</td>
<td><c:out value="${parlamentare.getPk().getNome()}"/></td> <!-- se non funziona 
prova con getPk().getNome() -->
</tr>
<tr>
 <td>Partito:</td>
<td><c:out value="${parlamentare.getPk().getPartito()}"/></td> <!-- se non funziona 
prova con getPk().getPartito() -->
</tr>
<tr>
 <td>Circoscrizione:</td>

 <!--   for(int i = 0; i < ${parlamentare.getPk().getCircoscrizione();}; i++) { %>  - 
 ->  
 <c:forEach items="${parlamentare.getPk().getCircoscrizione()}" var="CIRCOSCRIZIONE"> 
 <!-- se non funziona prova con getPk().getCircoscrizione() -->
  <td><c:out value="${CIRCOSCRIZIONE.getElement(CIRCOSCRIZIONE,i)}"/><br></td>  <!-- 
parlamentari.get(i).getCircoscrizione().getElement(a,1); -->

    </c:forEach>
</tr>
<tr>
<td>Data di nascita:</td>
<td><c:out value="${parlamentare.getData_nascita()}"/><br></td>
</tr>
<tr>
 <td>Luogo:</td>
<td><c:out value="${parlamentare.getLuogo()}"/><br></td>
</tr>
<tr>
 <td>Titolo di studi:</td>
<td><c:out value="${parlamentare.getTitolo_studi()}"/><br></td>
</tr>
<tr>
<td>Mandati:</td>
<c:forEach items="${parlamentare.getMandati()}" var="mandato">
   <table>
    <tr>
   <td>Mandato:</td> 
   <td><c:out value="${mandato}"/></td>
   </tr>
   </table>
   </c:forEach>
 </tr>

 <tr>
 <td>Commissioni:</td>
  <c:forEach items="${parlamentare.getCommissioni()}" var="commissione">
   <table>
    <tr>
   <td>Commissione:</td> 
   <td><c:out value="${commissione.getElement(commissione,i)}"/></td>
   </tr>
   </table>
   </c:forEach>
</tr>
  • See https://stackoverflow.com/questions/18825950/how-to-get-a-index-value-from-foreach-loop-in-jstl – rickz Sep 27 '22 at 03:02

0 Answers0