繁体   English   中英

"休眠验证器注释不适用于spring mvc"

[英]Hibernate Validator annotations not working with spring mvc

我对 Hibernate Validator 有疑问。 我输入了我的代码 @Size 注释,但是当我在 Tomcat 服务器上运行应用程序时,我可以在没有填充文本字段的情况下提交。 这段代码有什么问题?

客户等级:

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class Customer {

    private String firstName;

    @NotNull(message="is required")
    @Size(min=1, message="is required")
    private String lastName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

您可能需要在 xml 中添加以下 bean 定义。

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>

或者

对于自定义错误消息,您需要在资源文件夹中创建一个message.properties并使用ResourceBundleMessageSource

<!-- bind your messages.properties -->
<bean class="org.springframework.context.support.ResourceBundleMessageSource"
    id="messageSource">
    <property name="basename" value="messages" />
</bean>

你有没有尝试放置

 <!-- Hibernate Validator -->
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
     <version>5.4.1.Final</version>
 </dependency>

在你的 pom.xml 中?

我使用了 jar hibernate-validator-5.1.3.Final 并且它对我有用。 我在使用 6 时遇到了同样的问题。

重新启动 IntelliJ 为我解决了这个问题。 真的。 我生命中的 25 分钟我再也回不去了。

我有同样的问题。

我的解决方案是使用旧版本的 Hybernate 验证器。 问题是他们将包名更改为 jakarta。 而不是 javax。 从 6.2 版开始,它给我带来了问题,因为 spring class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" 仍在实现 javax.validation.ValidatorFactory

我在使用 Hibernate Validator 7 时遇到了同样的问题。我使用了 Hibernate 6,问题就解决了!

"

我遇到了同样的问题,要解决这个问题,请使用@NotEmpty<\/code>而不是@NotNull<\/code> ,这应该可以解决问题。

"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM