Я ищу способ отображения параметров формы: выберите на основе значения, выбранного в другой форме: выберите. Если, например, у меня есть 3 класса: Водитель , Автомобиль , CompetitionCar :
public class Car {
public String carId;
public String nameId;
}
public class Driver {
public String id;
public String name;
public Car car;
}
public class CompetitionCar {
public String id;
public Car car;
public Driver driver;
}
В базе данных у меня есть несколько автомобилей и водители. Водитель может вести только определенные автомобили, которые также были добавлены в базу данных.
Контроллер Spring MVC будет:
@Controller
@RequestMapping(value = "/")
public class CompetitionController {
@Autowired
UtilFacade utilFacade;
@RequestMapping(value = "/getCompetitionCarForm", method = RequestMethod.GET)
public String competitionCarForm(Model model){
List<Driver> drivers = utilFacade.getAllDrivers();
List<Car> cars = utilFacade.getAllCars();
CompetitionCar competitionCar = new CompetitionCar();
model.addAttribute("drivers", drivers);
model.addAttribute("cars", cars);
model.addAttribute("competitionCar", competitionCar);
return "competitionCarForm";
}
}
И CompetitionCarForm. jsp:
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Display details</title>
</head>
<body>
<form:form action="${pageContext.request.contextPath}/addCompetitionCar" modelAttribute="competitionCar" method="post">
<form:select path="car">
<c:forEach items="${cars}" var="car">
<form:option value="${car.carId}"/>
</c:forEach>
</form:select> <br>
<form:select path="driver">
<c:forEach items="${drivers}" var="driver">
<c:if test="CONDITION">
<form:option value="${driver.id}"/>
</c:if>
</c:forEach>
</form:select> <br>
<input type="submit" value="Add"/>
</form:form>
</body>
</html>
Теперь, допустим, я хочу добавить гоночную машину. Сначала я выбираю автомобиль в первой форме: выберите, и мне бы хотелось, чтобы во второй форме: выберите для отображения только тех водителей, которые могли управлять выбранным мной автомобилем.
Что я должен указать в «СОСТОЯНИИ» «? Я хотел бы что-то вроде test = "$ {driver.car.carId == selectedCarId}", где selectedCarId - это автомобиль, который я выбрал из первой формы: select.
Есть ли другая возможность сделать что-то подобное?
Заранее спасибо.