首页 > 解决方案 > 如何遍历 JSTL 中的对象列表

问题描述

在此处输入图像描述我有以下列表,该列表来自通过 toString 方法的类。我将 modelAndView 对象中的列表传递给 jsp 页面。现在我想遍历列表并在 jsp Page 中创建一个表。请指导。

 List<LocationStats> allStates = [LocationStats{state='Fujian', country='Afghanistan', latestTotalCases=51526}, LocationStats{state='Guangdong', country='Albania', latestTotalCases=59438}] ;

////////////////////// LocationStats.JAVA ////////////////// /////////////////

public class LocationStats {
    
    private String state;
    private String country;
    private int latestTotalCases;
    
    
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
    public String getCountry() {
        return country;
    }
    public  void setCountry(String country) {
        this.country = country;
    }
    public int getLatestTotalCases() {
        return latestTotalCases;
    }
    public void setLatestTotalCases(int latestTotalCases) {
        this.latestTotalCases = latestTotalCases;
    }
    @Override
    public String toString() {
        return "LocationStats{" +
                "state='" + state + '\'' +
                ", country='" + country + '\'' +
                ", latestTotalCases=" + latestTotalCases +
                '}';
    }
    
}

//////////////////////// HomeController.java //////////////// //////

@RequestMapping("/")
public ModelAndView home() {    
    
    
    ModelAndView mv = new ModelAndView();
    mv.addObject("location", coronaVirusDataService.getAllStates());
    mv.setViewName("home.jsp");
    return (mv);        
}

/////////////////home.jsp ///////////////////

<table>
  <tr>
    <th>state</th>
    <th>country</th>
    <th>latestTotalCases</th>
  </tr>
   <tr th:each="elements : ${location}">
    <td th:text="${elements.state}"></td>
    <td th:text="${elements.country}"></td>
    <td th:text="${elements.latestTotalCases}">0</td>
  </tr>             
</table>  

标签: javaspringloopsjspweb

解决方案


您应该在文件taglib开头添加jsp

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

比你可以这样写:

<table>
  <tr>
    <th>state</th>
    <th>country</th>
    <th>latestTotalCases</th>
  </tr>
    <c:forEach items="${location}" var="elements">
        <tr>
            <td>${elements.state}</td>
            <td>${elements.country}</td>
            <td>${elements.latestTotalCases}</td>
        </tr>
    </c:forEach>             
</table>  

您还可以检查此“位置”是否不为空,例如通过打印出来:

<%=location%>

推荐阅读