问题标签 [bean-validation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1804 浏览

java - Cross Field Validation with inline messaging in JSF with JSR 303

What's the best way to invoke class level JSR-303 constraints that do cross field validation from JSF and have the resulting messages get translated to a FacesMessage and be tied to a particular JSF component based on the PropertyPath in the ConstraintViolation?

rich:graphValidator is close, but it doesn't make use of the PropertyPath. Perhaps MyFaces extval could get me close, but there seems to be a whole extra layer of framework on time of bean-validation, so I avoided it.

Here's a simple example:

Picture a form where the information about the car and the driver are input. If the Driver had a license type of ROAD and the Car had a car type of RACE, it'd be ideal to see a resulting validation message be translated into a FacesMessage which is connected to the input for license type, since the message was added to that node using the fluent API of Bean Validation.

0 投票
2 回答
7379 浏览

java - Hibernate JSR303 验证和错误生成的 propertyPath

我正在尝试使用 Spring MVC 设置表单的 JSR-303 验证。我已经正确配置了所有内容(或者至少我认为我这样做了),并且验证工作正常。但是,如果我有一个包含要验证的对象集合的命令对象,并且我使用 @Valid 注释该集合,则 Hibernate JSR-303 提供程序没有提供正确的 propertyPath。ContraintViolation 对象内的 propertyPath 应该填充为list[0].barand list[1].bar,但 Hibernate 验证器只是提供list[].barand list[].bar。当 Spring 的 SpringValidatorAdaptor.validate() 方法尝试添加字段级错误时,这会导致 NumberFormatException(因为它在内部期望在这些括号中存在一个数字)。

使用 spring-context-3.0.5 和 hibernate-validator-4.1.0.Final (我也尝试了 4.0.2.GA 和 4.2.0.Beta2 并得到了相同的结果),我写了一个小单元测试来说明这个问题:

上述测试产生以下输出:

它产生的错误是正确的;但是, propertyPath 不是(至少据我了解)。

现在,如果我将 Hibernate 的 JSR-303 实现替换为 Apache 的(org.apache.bval.bundle-0.2-incubating--使用此处提到的依赖项),我会得到我期望的输出。这是完全相同的测试,但使用的是 Apache 的 JSR-303 注释而不是 Hibernate 的。请注意现在存在于 propertyPath 字段中的索引:

由于各种原因,我可能坚持使用 Hibernate 的 JSR-303 实现。我正在做的事情是否导致 Hibernate 验证器不填充这些索引?我试图尽可能避免在我的 Spring 控制器中进行手动错误处理。

感谢您提供的任何帮助!

0 投票
1 回答
859 浏览

jsf-2 - JSR303验证器消息递归解析?

我编写了一个 JSR303 验证器,将属性值与约束进行比较:

ValidationMessages.properties :

工作正常。几乎。我收到的验证消息如下所示:

有人可以建议简单方便的方法,如何让验证器识别和解析嵌套的 {home.lang.validator.Cmp.REL.GT} 键?我需要它在处理验证的 JSF2 中很好用。我没有使用 Spring,而是使用 hibernate-validator 4。

顺便说一句,看起来 hibernate-validator 4 没有完全实现 JSR303,因为后来在 4.3.1.1 中声明:

  1. Message parameters are extracted from the message string and used as keys to search the ResourceBundle named ValidationMessages (often materialized as the property file /ValidationMessages.properties and its locale variations) using the defined locale (see below). If a property is found, the message parameter is replaced with the property value in the message string. Step 1 is applied recursively until no replacement is performed (i.e. a message parameter value can itself contain a message parameter).
0 投票
2 回答
4548 浏览

java - 没有让 JSR303 注释与 Tomcat 7 一起使用

经过几个小时的谷歌和几个教程后,我被打败了......这并不是我得到的错误可以给我提示问题的事实,而是完全没有它们让我发疯!

以下代码有效,只是不应该!用于检查输入是否为空或小于 3 个字符的注释永远不会运行。在部署项目或写入 name 变量时,它们也没有给出任何类型的错误。

和输入形式:

我的猜测是造成问题的是tomcat,尽管我很确定我已经导入了所有必要的库。我正在使用的 IDE Eclipse 也是如此。

0 投票
4 回答
18799 浏览

spring-mvc - 使用自定义消息进行 JSR-303 验证

我正在使用 Spring 3.0.5-RELEASE,带有 JSR-303 样式验证和 Hibernate 验证器 4.1.0-Final。我的模型类看起来像这样:

这在带有绑定的 spring mvc servlet 中作为请求参数传递。所以请求看起来像这样:

http://localhost:8080/path?n=10

我想要的是能够在出现类型不匹配异常时自定义错误消息,例如

http://localhost:8080/path?n=somestring

这会导致我想替换一条很长的默认消息。

我已经尝试了网络上描述的几乎所有配置,但它们似乎都不起作用。有人知道正确的配置是什么吗?

具体来说,我的 mvc-servlet.xml 中需要什么?我的 messages.properties 文件中需要什么?message.properties 文件是否有一个神奇的名称,以便 hibernate-validator 可以找到它?

我在我的 mvc-servlet.xml 中使用了以下内容但没有成功:

还有一个位于 src/main/resources(以及 src/main/webapp/WEB-INF)的 messages.properties 文件......

我已经尝试了 messages.properties 中的各种组合,即使只是简单地覆盖了@NotEmpty 消息,即使这对我也不起作用。

0 投票
3 回答
2661 浏览

java - Spring javax.validation 注解未在 BindingResult 中捕获

我正在尝试使用 javax.validation 注释向我的模型对象(它兼作我的表单支持 bean)添加验证。

我的模型如下所示:

在我的控制器中,我有这样的方法调用:

我的 spring-servlet.xml 文件中也有<mvc:annotation-driven/>

每次我使用空值运行表单时,它都会告诉我有 0 个绑定结果错误。

我在我的类路径上使用带有 Hibernate-Validator-4.2.0 和 Validation-API-1.0.0 的 Java 1.6。

谁能帮助我,让我知道我做错了什么?一直在玩这个,无法让它工作。

谢谢

0 投票
4 回答
8825 浏览

spring-mvc - 验证生成的 JAXB 类 (JSR 303 / Spring)

我使用 JAXB(maven-jaxb2-plugin)从模式(请求和响应)生成域对象
我想为几个属性添加验证(notnull /empty)。我想要自定义 Bean 验证,该应用程序是一个 REST 服务,我使用的是 Spring 3 和 JSR 303,但我认为我不能使用 JSR 303 来验证从模式生成的对象。

有人可以在正确的方向上推动我如何完成这项工作。

0 投票
5 回答
19663 浏览

validation - 如何在 actionListener 或 action 方法中执行 JSF 验证?

我的 Bean 验证在我的应用程序中运行良好。现在我想检查一个新用户是否没有选择已经选择的用户名。

在 actionlistener 中,我有检查数据库的代码,但是如果用户选择了一个已经存在的用户名,我如何强制用户被发送回他们所在的页面?

0 投票
2 回答
3660 浏览

gwt - 来自 Ant Ivy 构建的 gwt 2.3 gwt-servlet-deps.jar

我正在尝试使用Ant Ivy构建在 DevMode 中工作的简单 GWT 2.3 项目。我在 2.3 之前的 GWT 项目(特别是 GWT 2.0.x)中使用了 Ivy,并且过去的以下依赖项(在我的 Ivy 模块 xml 文件中)对我有用:(我已经删除了我的 Ivy 配置的特定名称,并将它们显示为下面的“...”。)

但是,我的 gwt-compile(当调用 GWT 的 Java-to-Javascript 编译器时)在 GWT 2.3 下使用上述内容失败。特别是,有几个类似于以下的错误:

在在线搜索可能相关的参考资料后,我在从源代码构建 2.3 的候选版本时发现了类似问题的线程。这些线程经常提到一个gwt-servlet-deps.jar需要包含在编译类路径中的内容,这似乎是GWT 问题跟踪系统中围绕此问题的劳动成果。

当然,对于 Ivy,它与我所看到的建议并不完全相同。上面的<dependency...规则似乎没有下载a gwt-servlet-deps.jar(与下载GWT的官方发行版相反,其中可以找到该jar的特殊副本)。

所以我推断在常春藤宇宙中我可能需要添加这样的东西:

...而且我认为即使有这个想法我也很糟糕(我似乎是常春藤和 Maven 世界的永久新手)但是,唉,我仍然遇到同样的错误。

显然,Java-to-Javascript 编译器想要源代码,而不仅仅是字节码 jar,但我不知道如何告诉 Ivy 去获取它们。我觉得我很接近了,因为我发现这个线程显示了一个 Ant 任务,它将两个验证 jar 复制到 lib(字节码和源代码),但我需要一些帮助来连接 Ivy 世界的点。

我将如何告诉 Ivy 获取源 jar?

0 投票
1 回答
5952 浏览

jsf - 有字符串转换器吗?

对于在 JSF bean 验证中转换字符串值,将使用哪个转换器?就像我们使用的数值和我们使用<f:convertNumber>的日期一样<f:convertDataTime>。我的代码片段如下: JSF 页面:

豆类: