如何在JSP循环中访问两个类的变量

时间:2016-10-20 08:43:02

标签: java jsp spring-mvc collections

我有两节课:

 public Car
      Integer number;
      String  name;

  public Parking
      Integer parkingNumber;
      String address;

我向我的JSP发送了一份停车清单和一份汽车清单

 List<Parking> parkingList= new ArrayList<Parking>();
 List<Car> carList= new ArrayList<Car>();

但充满了价值(对于这个例子来说并不重要)

Model.addAttribute("parkingList", parkingList);
Model.addAttribute("carList", carList);`

如何在循环(foreach)内访问car-&gt;汽车的名称?car =&gt; number =定义的Parking-&gt; parkingNumber(假设例如这是5)?

   <c:forEach items="${parkingList}" var="park" varStatus="status"> 
       <p> $carList[park.parkingNumber=5].name</p>
  </c:forEach>

这是对的吗? 不幸的是我不能使用另一个Foreach,因为car.name值必须只在页面中写入一次。

2 个答案:

答案 0 :(得分:2)

代码中的下一行似乎不正确

 <p> $car[park.parkingNumber=5].name</p>

因为您在模型中设置了以下值

Model.addAttribute("parkingList", parkingList); 
Model.addAttribute("car", car);

您在模型中使用单个Car对象,并且您尝试像数组$car[park.parkingNumber=5].name

一样访问它

您可以直接说car.name

答案 1 :(得分:1)

试试这个,

<c:forEach items="${parkingList}" var="park" varStatus="parkStatus"> 
   <c:forEach items="${carList}" var="car" varStatus="carStatus"> 
      <c:if test="car.number eq park.parkingNumber">
         <p><c:out value="car.name" /></p>
      </c:if>
   </c:forEach>
</c:forEach>

如果您不希望在服务器端使用多个foreach循环,则可以在Car类中使用Parking类,例如,

public Parking
  Integer parkingNumber;
  String address;
  List<Car> carList = new ArrayList<>();

Car列表放在Parking对象中,其中所有车辆的编号与parkingNumber相同。

for(Parking parking : parkingList) {
  for(Car car : carList) {
    if (car.getNumber() == parking.getParkingNumber()) {
      parking.getCarList().add(car);
    }
  }
}

然后你必须重复这一次,你将得到所有停车号码相同的汽车。

<c:forEach items="${parkingList}" var="park" varStatus="parkStatus"> 
   <c:forEach items="${park.carList}" var="car" varStatus="carStatus"> 
      <p><c:out value="car.name" /></p>
   </c:forEach>
</c:forEach>