У меня есть простая сущность ...
@Entity
public class WatchedDirectory {
@Column(nullable=false)
@NotBlank(message="Filesystem path CANNOT be empty")
String filesystemPath;
}
... и конечная точка GET для создания одной ...
@GetMapping("/add")
public String add(@ModelAttribute WatchedDirectory watchedDirectory) {
return "mng-dir-add";
}
..., которая показывает форму, созданную в Thymeleaf, с проверкой ошибок и все. Как только вы нажмете кнопку sumbmit, данные перейдут в конечную точку POST ...
@PostMapping("/add")
public String addExecute(@Valid @ModelAttribute WatchedDirectory watchedDirectory, BindingResult result, RedirectAttributes redirect, Model model) {
if(result.hasErrors()) {
// here I want to iterate through
// errors and clean erroneous fields
return "mng-dir-add";
}
watchedDirectory = fs.persistDirectory(watchedDirectory);
redirect.addFlashAttribute("added", watchedDirectory);
return "redirect:/list";
}
... и все будет хорошо и модно. Когда данные действительны, они сохраняются и выдается перенаправление в список (POST / Redirect / GET). Когда данные недействительны, заполняются поля ошибок thymeleaf, и я перечисляю сообщения об ошибках под соответствующими полями.
Единственное, что я хочу изменить, но не могу понять, как это сделать, - это удалить некоторые данные из модели.
То, что я до сих пор пробовал: изменение параметра @ModelAttribute
, установка атрибутов в Model
, установка атрибутов в RedirectAttributes
. Каждый раз, когда я получаю одни и те же данные, предоставленные пользователем без каких-либо изменений в форме вывода, по какой-то причине я ничего не могу изменить. Я попытался также перенаправить на метод GET, но кажется, что он очищает сланец, что мне не нужно.
Если кому-то интересно, то как выглядит форма в тимелист:
<form id="content" action="#" th:action="@{/add}" th:object="${watchedDirectory}" method="post" class="was-validated">
<div class="form-group has-feedback has-error">
<label for="filesystemPath">Filesystem path:</label>
<input th:field="*{filesystemPath}" type="text" id="filesystemPath" name="filesystemPath" class="form-control" placeholder="~/" required />
<label th:if="${#fields.hasErrors('filesystemPath')}" th:errors="*{filesystemPath}"></label>
</div>
<button type="submit" class="btn btn-outline-success">Save</button>
</form>
* Атрибут 1022 * в поле ввода закроется, если будет предоставлен пробел, но при проверке Spring появится сообщение об ошибке. Очистка этого поля и возврат его пользователю сделает вещи более последовательными, чем показ смешанных сигналов, таких как:
Любая помощь будет очень признательна.