gpt4 book ai didi

hibernate - Spring 3 验证 (JSR-303) @Min

转载 作者:行者123 更新时间:2023-12-02 23:35:27 24 4
gpt4 key购买 nike

我正在尝试验证一个应该包含(如果不为空)自然数(即非零正整数:1、2、3,...)的输入字段

我正在使用以下注释:

@Digits(integer=10, fraction=0)
@Min(value = 1)
private Long number;

(这是描述我的约束的最佳方式吗???)

当我提交一个数字(例如 1.5)时,我会收到一条验证消息,这很好。但是,当我提交诸如 -1 之类的输入时,我没有收到任何验证消息。我错过了什么?

谢谢!

附注由于我对该字段的(其他)Hibernate 注释位于该字段的 getter 上,因此我只需将这两个注释也移至 getter(而不是位于实际字段上)。没有帮助。

编辑

我刚刚读到我可能需要添加 <mvc:annotation-driven />到我的 XML。我做到了,但是在启动服务器时出现异常:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/mvc]
Offending resource: ServletContext resource [/WEB-INF/dispatcher-servlet.xml]

我不确定这意味着什么,以及我是否真的需要 (????) 该注释驱动标签...另外,如果我在 xml 中需要该注释驱动标签,为什么我的其他注释(包括验证注释之一)没有它也能工作吗?

最佳答案

您确实需要 <mvc:annotation-driven />标签。这就是告诉 Spring Web MVC 激活 JSR-303 验证的原因。

需要检查的一些事项:

1) 确保声明 mvc dispatcher-servlet.xml 中的命名空间前缀配置。例如(此处使用 Spring 3):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
...
</beans>

2) 还要确保您的类路径上有 Spring Web MVC JAR。 JAR 包含命名空间处理程序,它知道如何处理 MVC 配置命名空间。

3) 确保 Hibernate Validator 位于类路径中。 Spring 需要它来执行验证。

关于您的其他注释为何有效的问题:<mvc:annotation-driven>不负责所有注释,仅负责其中一些注释。它负责的一件事是 JSR-303 验证,如上所述。

关于为什么您的其他验证有效,我的猜测是它根本不是有效的验证。相反,当您尝试将 1.5 放入 Long 时,Spring 无法做到这一点,并且您可能会收到某种错误消息。我认为您不需要 @Digits注释都在这里。如果您删除它,我猜您仍然会收到该消息。

关于hibernate - Spring 3 验证 (JSR-303) @Min,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7087325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com