【问题标题】:Java Spring Validation does not catch errorsJava Spring Validation 不会捕获错误
【发布时间】:2020-10-28 14:08:37
【问题描述】:

我正在做一个小项目。

除了验证之外一切正常。

我有一个名为 Fighter 的类,它的名称属性不应为 NULL 或 Empty。 我确实像我的教授一样在他的样本中添加了所有用于验证的内容。

但是,如果我添加一个名称为空的 Fighter,则不会捕获错误,新的 Fighter 只会保存到数据库中

我错过了什么吗?

我的战士班

@Entity
public class Fighter {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    public int id;

    @NotNull
    @Size(min = 2, max = 30)
    public String name;

    @Column(name = "path")
    public String path;
}

控制器中的添加函数

    @GetMapping("/join")
    public String showFighterForm(Model model) {
        model.addAttribute("fighter", new Fighter());
        return "add-fighter";
    }

    @PostMapping("/addfighter")
    public String addFighter(@Valid Fighter fighter, BindingResult bindingResult, Model model) {

        if (bindingResult.hasErrors()) {
            return "add-fighter";
        }
        fighter.setPath();
        fighterRepository.save(fighter);
        model.addAttribute("fighters", fighterRepository.findAll());
        return "character";
    }

也许有人可以帮我解决这个问题。

【问题讨论】:

  • 你有验证器实现吗?仅仅添加 validation-api 依赖是不够的,没有像 hibernate-validator 这样的东西不会发生任何事情。注释只是您需要处理它的元数据。

标签: java spring validation spring-mvc thymeleaf


【解决方案1】:

我也有这个问题。重新创建您的数据库表。您可以手动执行此操作,也可以在 application.properties 文件中写入此行

spring.jpa.hibernate.ddl-auto=create

重新创建后更改更新时的值

spring.jpa.hibernate.ddl-auto=update

【讨论】:

    【解决方案2】:

    你可以试试@NotEmpty 注解。它还检查字符串的长度。是否大于0。

    【讨论】:

    • 我也试过@NotEmpty,它也不起作用。
    猜你喜欢
    • 2012-06-16
    • 2017-03-16
    • 2017-07-04
    • 2022-06-21
    • 2013-04-19
    • 2013-09-16
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    相关资源
    最近更新 更多