Форма с выбором (выпадающий) не показывает код ошибки - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть форма, содержащая выбор для перечисления всех учителей по идентификатору в системе, но он не работает должным образом.

Вот часть кода формы

и соответствующаязапросы контроллера пути

Я использую Thymeleaf и Spring Boot, поэтому 'pr' соответствует имени переменной хранилища учителей.

<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;
}

@PostMapping(value = {"/selecionaProfessor"})
@ResponseBody
public ModelAndView selecaoProfessor(){
    ModelAndView pagSucesso = new ModelAndView("/pagSucesso");

    pagSucesso.addObject(pr.findAll());
    return pagSucesso;
}

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Прежде всего, что не работает? потому что я вижу много вещей, которые могут не работать, может быть, потому что я не вижу весь код, или я угадываю некоторые вещи, давайте посмотрим

Когда вы входите в свой контроллер, используя

 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-й ошибке

Надеюсь, это поможет

0 голосов
/ 30 сентября 2019

С вашего контроллера, отправьте список профессоров в соответствии с нижеперечисленным на ваш взгляд. Здесь вы связываете список профессоров с «ProfessorList»:

model.addAttribute("professorList", pr.findAll());

А затем, чтобы получить доступ к списку «ProfessorList» в вашем листе тимьяна, выполните (аналогично) следующее:

<option th:each="professor: ${professorList}" th:value="${professor}"> </option>

Не полный код, но я надеюсь, у вас есть идея начать.

Для полного примера посмотрите здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...