Как передать модель в форму без запуска проверки (перед редактированием) - PullRequest
0 голосов
/ 16 октября 2019

Используя форму тимилиста и режим гибернации, я хочу передать модель в форму, заполнить ее значения в представлении, а затем проверить и создать этот объект. Проблема в том, что когда я передаю модель в форму, я получаю ошибку проверки.

После этого урока: https://www.baeldung.com/spring-boot-crud-thymeleaf

Полный проект можно загрузить здесь: https://github.com/pyrovoice/BusTraining.git

Сопоставление:

@GetMapping("/createbusvehicle")
public String createBusVehicleDisplay(BusVehicle busVehicle) {
    return "createBusVehicle";
}

@PostMapping("/createbusvehicle")
public String checkAndCreateBusVehicle (@Valid BusVehicle newBusVehicle, BindingResult bindingResultModel, Model model) {
    busVehiculeRepository.save(newBusVehicle);
    return "mainpage";
}

HTML:

<form action="#" th:action="@{/createBusVehicle}" th:object="${busVehicle}" method="post">
<p>plateNumber: <input type="text" th:field="*{plateNumber}" /></p>
<p>passengerCapacity: <input type="text" th:field="*{passengerCapacity}" /></p>
<select name="color">
    <option th:each="colorOpt : ${T(com.grazzini.model.BusVehicleColor).values()}"
            th:value="${colorOpt}" th:text="${colorOpt.displayValue}"></option>
</select>

<select name="type">
    <option th:each="typeOpt : ${T(com.grazzini.model.BusVehicleType).values()}"
            th:value="${typeOpt}" th:text="${typeOpt.displayValue}"></option>
</select>


<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>

поле, которое создает проблему в BusVehicle:

@NotNull
@Min(0)
@Max(70)
@Column(name = "BUSVEHICULE_PASSENGERCAPACITY")
private int passengerCapacity;

При удалении BusVehicle busVehicleиз метода createBusVehiculeDisplay у меня появляется ошибка «Ни BindingResult, ни простой целевой объект для имени компонента« busVehicle »не доступны в качестве атрибута запроса». При этом у меня появляется «Ошибка поля в объекте« busVehicle »в поле« passengerCapacity »: отклоненное значение [null]; [...]»

1 Ответ

1 голос
/ 16 октября 2019

Измените int на Integer, а также удалите @NotNull из конструктора BusVehicle.

@NotNull
@Min(0)
@Max(70)
@Column(name = "BUSVEHICULE_PASSENGERCAPACITY")
private Integer passengerCapacity;

Также вам нужно исправить URL-адрес публикации в FORM вместо / createbusvehicle в файле / createBusVehicle в файле createBusVehicle.html.

...