在我的小型应用程序中,我需要验证用户输入数据的准确性,但过了几个小时,我无法解决验证问题,当我发布空白表格时,我不会收到消息“您的数据为空” ,请填充它。
我的实体:
@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文件中的最新版本,但是,在这种状态下,我的应用甚至无法启动,而且我已经用hibernate替代项替换了javax.validation,在这种状态下,我得到了另一个错误,但是无论如何我的表单验证都不起作用,但是,正如我说的那样,我有另一个实体和表单,它们可以正常工作,我已经对它们进行了压缩,并且没有发现任何区别,对于任何问题我都将不胜感激有点帮助。