В моем небольшом приложении мне нужно проверить достоверность введенных пользователем данных, но более нескольких часов я не могу исправить проблемы с проверкой, когда я отправляю пустую форму, я не получаю сообщение вроде «Ваши данные пустыПожалуйста, заполните его.
Моя сущность:
@Table(name = "library")
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idLibrary")
private int id;
@Column(name = "valute")
private String valute;
@Column(name = "fileid")
private String fileId;
@Size(min = 3,message = "Замалий розмір")
@javax.validation.constraints.NotEmpty(message = "Не може бути пустим!")
@Column(name = "bookName")
private String name;
@javax.validation.constraints.NotEmpty(message = "Не може бути пустим!")
@Column(name = "Author")
private String aut;
@Column(name = "Descriptions")
private String desc;
@javax.validation.constraints.NotEmpty(message = "Не може бути пустим!")
@Column(name = "Year")
private String year;
Помимо этой сущности у меня есть еще одна, которая работает должным образом, форма jsp
<form:form method="post" action="books?new" modelAttribute="book" acceptCharset="utf-8" enctype="multipart/form-data" >
<table>
<tr>
<td><form:label path="name">Назва</form:label></td>
<td><form:input path="name" /> <sf:errors path="name" cssClass="isa_error"/></td>
</tr>
<tr>
<td><form:label path="desc">Опис</form:label></td>
<td><textarea cols="60" rows="10" name="desc">Опис</textarea> <sf:errors path="desc" cssClass="isa_error"/></td>
</tr>
<tr>
<td><form:label path="aut">Автор</form:label></td>
<td><form:input path="aut"/> <sf:errors path="aut" cssClass="isa_error"/></td>
</tr>
<tr>
<td><form:label path="year">Рік</form:label></td>
<td><form:input path="year"/><sf:errors path="year" cssClass="isa_error"/></td>
</tr>
<tr>
<td><form:label path="price">Ціна</form:label> </td>
<td><form:input path="price" /> <sf:errors path="price" cssClass="isa_error"/> <select name="valute">
<option value="UAN" selected>UAN</option>
<option value="USD">USD</option>
<option value="EURO">EUR</option>
</select></td>
</tr>
<tr>
<td>Зображення</td>
<td><input name="photo" type="file" ></td>
<td><p><form:errors cssClass="isa_error" delimiter="" /></p></td>
</tr>
<tr>
<td><input type="submit" value="Додати" onclick="this.disabled=true;this.value='Виконується!';this.form.submit();"></td>
</tr>
</table>
</form:form>
И класс контроллера:
@PostMapping( value = "/books")
public String add(@ModelAttribute("book") @Valid Book book, @RequestParam(value = "photo", required = false) MultipartFile photo, @RequestParam(value = "valute",required = false) String valute,BindingResult result) {
if (result.hasErrors()) {
Logger.getAnonymousLogger().info("BINDING DOESN'T WORK !!!!!");
return "addBook";}
if (!photo.isEmpty()) {
try {
validateImg(photo);
} catch (IOException ex) {
result.reject("uk_UA", "Поганий тип");
return "addBook";
}
}
StringBuilder builder = new StringBuilder();
builder.append(service.download(photo));
Logger.getAnonymousLogger().info("SOMETHING HAS BROKEN IN LOGGING FILE");
System.out.println("INSIDE ADD METHOD ");
book.setFileId(builder.toString());
service.add(book);
return "redirect:/books";
}
Я пытался заменить hibernate-validator на новейшую версию в файле pom.xml, но в этом состоянии мое приложение даже не запускается, также я заменил javax.validation альтернативой hibernate, в этом состоянии яполучить еще один ошибку, но в любом случае моя проверка формы не работает, но, как я уже сказал, у меня есть другая сущность и форма, которая работает правильно, я конкурировал с ними и не заметил никакой разницы, буду благодарен залюбая помощь.