java – Hibernate Validator.如何使用@Valid注释?
将@Valid注释放在方法参数级别时有什么用途?
public void (@Valid Person p) { ... } 我创建了一个测试,并将此方法传递给非有效对象,但没有任何反应. 解决方法
对象上的@Valid注释表示验证框架处理带注释的对象.当在方法的参数上使用时,这被称为方法级验证.请注意,方法级别验证不是核心规范的一部分,实际上只有在将Bean Validation集成到容器类型框架(JSF,CDI,Java EE)中时才支持.当Bean Validation集成到这样的支持容器中时,会发生的是,当在bean上调用生命周期方法时,容器会检测方法参数上的JSR 303注释并触发关联bean的验证.
例如,如果您在JAX-RS资源类中具有以下方法定义: @Path("/example") public class MyExampleResourceImpl { @POST @Path("/") public Response postExample(@Valid final Example example) { // .... } } 当调用postExample方法以响应JAX-RS容器处理的请求时,将验证示例bean.将此行为与运行独立Java SE应用程序时会发生的情况进行对比: public class MyMainClass { public static void main(final String[] args) { final MyMainClass clazz = new MyMainClass(); clazz.echo(new Example()); } public Example echo(@Valid final Example example) { // ... } } 在这种情况下,即使您包含了所有JSR 303运行时JAR,运行该程序也不会触发Example参数的验证.这是因为没有可用的容器实现方法级别验证. Bean Validation Specification在附录C中详细描述了所有这些.为了您的利益,我在下面引用了一些内容:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |