#java #jsp #spring-mvc #collections
#java #jsp #spring-mvc #Коллекции
Вопрос:
У меня есть два класса:
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-> номер = определенная парковка-> parkingNumber (предположим, например, что это 5)?
<c:forEach items="${parkingList}" var="park" varStatus="status">
<p> $carList[park.parkingNumber=5].name</p>
</c:forEach>
Правильно ли это?
К сожалению, я не могу использовать другой Foreach, потому что car.name значение должно быть записано на странице только один раз.
Комментарии:
1. Вы пробовали использовать
foreach
циклы для обоих списков, как указано в моем ответе?2. Проблема в том, что при добавлении другого foreach у меня будет более одного <p>car.name </p> пока мне нужно, чтобы она печаталась только один раз
3. Это тоже не может этого сделать… для моего проекта мне нужно проверить, что внутри jsp, к сожалению
Ответ №1:
Приведенная ниже строка в вашем коде кажется неверной
<p> $car[park.parkingNumber=5].name</p>
Потому что вы устанавливаете значения ниже в модели
Model.addAttribute("parkingList", parkingList);
Model.addAttribute("car", car);
где вы помещаете один объект Car в модель и пытаетесь получить к нему доступ как к массиву $car[park.parkingNumber=5].name
Вы можете прямо сказать car.name
Комментарии:
1. Спасибо, вы полностью правы. Извините, но это мне не поможет. Что я действительно пытался понять, так это как получить доступ в случае, если я отправил в JSP список карлов, подобный списку парковки. Теперь я редактирую свой вопрос.
2. Я не совсем понимаю ваш вопрос Как я могу получить доступ внутри цикла (foreach) к автомобилю-> название автомобиля с car-> номер = определенная парковка-> parkingNumber (предположим, например, что это 5) ? . Можете ли вы правильно это объяснить?
3. Я хочу получить доступ к переменной car name для ее печати в jsp, но только в том случае, если переменная car number равна переменной parkingNumber класса parking @Sachin Mesare. К сожалению, я должен выполнить эту проверку внутри JSP, и я не знаю как..
4. вы можете добавить еще один цикл for внутри него, а затем добавить проверку для car.number
5. К сожалению, мне приходится печатать значение в JSP внутри <p> </p> только один раз …. если я добавлю еще один цикл, он будет записан более одного раза @Sachin Mesare
Ответ №2:
Попробуйте это,
<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>