我有3個下拉菜單(其中一個是填充城市,一個是機構,另一個是服務)。如果我選擇一個城市,第二個下拉列表應該加載數據(代理),如果我選擇一個代理商,則第3個下拉列表應加載數據(服務)。我能夠填充第一個下拉列表(城市),但我不知道如何填充第二個和第三個。動態下拉使用百里香,春季啓動
我應該爲每個下拉菜單寫一個控制器並返回值嗎?如果答案是肯定的,我該如何返回該值? 我讀過Thymeleaf不是組件技術,而是像JSP這樣的模板技術。因此,在Thymeleaf中沒有組件或內置機制來進行客戶端 - 服務器通信。 所以我需要使用普通的舊HTML表單或使用AJAX調用來編程通信。 我如何使用普通的舊式HTML對其進行編程?
我嘗試過使用表單,但是我點擊只提交一次,這不是我所需要的。 我閱讀了關於下拉菜單的帖子,但找不到任何有用的信息。我看到了簡單的方法是使用jQuery,但我不知道jQuery。 有沒有辦法只用百里香和春季靴子呢? 謝謝! 我會在下面發佈我的代碼。
appointment.html
<form th:action="@{/appointment/create}" method="post" id="appointmentForm">
<input type="hidden" name="id" th:value="${appointment.id}"/>
<div class="form-group">
<label for="location">Alege orasul:</label>
<select class="form-control" required="required"
th:value="${appointment.location}" name="location" id="location">
<option disabled="disabled" selected="selected" > --
alege orasul --</option>
<option th:each="city : ${cities}" th:value="${city.id}"
th:text="${city.name}" ></option>
</select>
</div>
</form>
<form th:action="@{/appointment/agency}" method="post" id="appointmentForm">
<input type="hidden" name="id" th:value="${appointment.id}"/>
<div class="form-group">
<label for="location">Alege agentia:</label>
<select class="form-control" th:value="${appointment.agency}" name="agency" id="agency" required="required">
<option disabled="disabled" selected="selected" > -- alege agentia --</option>
<option th:each="agency : ${agencies}" th:value="${agency.id}" th:text="${agency.name}" ></option>
</select>
</div>
</form>
<form th:action="@{/appointment/service}" method="post" id="appointmentForm">
<input type="hidden" name="id" th:value="${appointment.id}"/>
<div class="form-group">
<label for="location">Alege serviciul:</label>
<select class="form-control" th:value="${appointment.service}" name="service" id="service" required="required">
<option disabled="disabled" selected="selected" > -- alege serviciul --</option>
<option th:each="service : ${services}" th:value="${service.id}" th:text="${service.name}" ></option>
</select>
</div>
</form>
AppController.java
@Controller
@RequestMapping("/appointment")
public class AppointmentController {
@Autowired
UserService userService;
AppointmentService appointmentService;
CityService cityService;
AgencyService agencyService;
SerService serService;
private ModelAndView mav;
@RequestMapping(value="/create", method=RequestMethod.GET)
public String createAppointmentPost(Model model, @ModelAttribute("city") City
city, @ModelAttribute("agency") Agency agency){
Appointment appointment=new Appointment();
model.addAttribute("appointment", appointment);
model.addAttribute("dateString", "");
model.addAttribute("cities", cityService.findAll());
//getAllAgencies(model, city);
getAllServices(model,agency);
return "appointment";
}
@RequestMapping(value="/agency", method=RequestMethod.GET)
public String getAllAgencies(Model model, @ModelAttribute("city") City city){
model.addAttribute("agencies", agencyService.listAllAgencies(city));
return "redirect:/appointment/create";
}
public void getAllServices(Model model, @ModelAttribute("agency") Agency
agency){
if(agency==null){
return;
}
model.addAttribute("services", serService.listAllServices(agency));
}