javax.validation.UnexpectedTypeException:HV000030:找不到约束'javax.validation.constraints.NotEmpty'的验证器

时间:2019-02-06 19:27:13

标签: java spring hibernate validation

在我的小型应用程序中,我需要验证用户输入数据的准确性,但过了几个小时,我无法解决验证问题,当我发布空白表格时,我不会收到消息“您的数据为空” ,请填充它。

我的实体:

@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,在这种状态下,我得到了另一个错误,但是无论如何我的表单验证都不起作用,但是,正如我说的那样,我有另一个实体和表单,它们可以正常工作,我已经对它们进行了压缩,并且没有发现任何区别,对于任何问题我都将不胜感激有点帮助。

0 个答案:

没有答案