Я занимаюсь разработкой приложения Spring + Thymeleaf.Я реализую поиск с несколькими параметрами.У меня есть форма с соответствующим DTO.Вот код DTO:
public class ClassSearchDto {
private String searchParam;
private Long programId;
private List<String> teacherNames;
//getters, setters and constructor are omitted
}
Как видите, у меня есть список строк в моем DTO, который называется teacherNames
.Вот как я отображаю свою форму:
<form th:action="@{/classes/search}" method="get" th:object="${classSearchDto}">
<div class="form-group">
<input type="hidden" class="form-control"
th:value="${classSearchDto.programId}" th:field="*{programId}"/>
<label for="searchParam">Search</label>
<input type="text" class="form-control" id="searchParam" placeholder="keyword"
th:value="${classSearchDto.searchParam}" th:field="*{searchParam}"/>
<div>
<th:block th:each="name, iter ${classSearchDto.teacherNames}">
<input th:value="${name}" th:field="*{teacherNames[__${iter.index}__]}/>
</th:block>
</div>
</div>
<button class="btn btn-default" type="submit">Find</button>
</form>
Я хочу реализовать свой поиск с помощью аннотации @RequestParam
на серверной части.Это мой контроллер:
@RequestMapping(value = "/search")
public String findClassByName(@RequestParam("searchParam") final String searchParam,
@RequestParam("programId") final Long programId,
@RequestParam("teacherNames") final List<String> teacherNames,
final Model model) {
...
}
Проблема в том, что я не могу получить список имен учителей таким образом.Я получаю это исключение:
org.springframework.web.bind.MissingServletRequestParameterException:Required List parameter 'teacherNames' is not present
Не могли бы вы помочь мне перенести список элементов в DTO на мой сервер с таким подходом?Может быть, вы знаете, как это сделать правильно по-другому.Заранее спасибо.