Прежде всего, что не работает? потому что я вижу много вещей, которые могут не работать, может быть, потому что я не вижу весь код, или я угадываю некоторые вещи, давайте посмотрим
Когда вы входите в свой контроллер, используя
localhost:8080/professor/selecionaProfessor
ожидаете ли вы использовать правильную форму? (следующий код)
<form th:action="@{/professor/updateProfessor/}" method="post" th:object="${professor}">
<div class= "form-group">
<label th:for = "id">Id</label>
<select th:field="*{id}">
<option
th:value = "${id}"
th:text = "${professor.id}">
</option>
</select>
</div>
<input type = "submit" value = "Add Professor">Save</button>
</form>
, потому что, если это правильно, у вас есть проблема в вашем методе:
@GetMapping(value = {"/selecionaProfessor"})
@ResponseBody
public ModelAndView professorSelecao(){
ModelAndView atualizaProfessor = new ModelAndView("/atualizaProfessor");
atualizaProfessor.addObject("Add Professor");
return atualizaProfessor;
}
, вы получите сообщение об ошибке:
Neither BindingResult nor plain target object for bean name 'professor' available as request attribute
Итак, вам не хватает добавить Профессора ключей и Список, поэтому измените:
atualizaProfessor.addObject("Add Professor");
на что-то вроде:
atualizaProfessor.addObject("professor", someListOfProfessorHereFromTheService (List<Professor>));
, и это должно работать, если ваш объект профессора имеет атрибутыу вас есть в вашей форме.
Теперь давайте предположим, что это работало раньше, и ошибка была не в этом.
Когда вы входите в свою форму, если вы видите здесь:
form th:action="@{/professor/updateProfessor/}"
вы используете updateProf Professor. Я не вижу, что на вашем контроллере у вас есть
@PostMapping(value = {"/selecionaProfessor"})
Так что я думаю, что вы должны изменить отображение URL внутри html-страницы или контроллера и использовать так же, какошибка 1, сопоставьте объект, используя ключ и значение, и итерируйте список в html, как я показал в 1-й ошибке
Надеюсь, это поможет