问题标签 [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.
spring-mvc - Bean[] 类绑定的 NullValueInNestedPathException
您好我想问您是否可以将bean数组分配为表单
例如我有一个表格:
我喜欢在我的 jsp 中访问这个组数组。我可以这样做吗:
我得到的是一个例外:
org.springframework.beans.NullValueInNestedPathException:bean 类 [PageForm] 的无效属性“groupArray [0]”:无法访问索引属性路径“groupArray [0]”中引用的属性的索引值:返回 null
请帮我。
谢谢。
hibernate - javax.validation:收到错误“找不到类型的验证器:”
框架:JQuery、Spring、Hibernate、Hibernate Validator(JSR-303 Bean Validation)
平台:Windows
我正在尝试使用 JSR 303-Bean Validation 定义自定义约束 @IdMustExist。约束的目的是检查输入的 id 值是否存在于关联表中。我收到错误“javax.validation.UnexpectedTypeException:找不到类型的验证器:com.mycompany.myapp.domain.package1.class1”。
如果我将 @IdMustExist 放在 Class1 的字段定义中(如下面的示例代码中所示),我会收到上述错误。但是如果我将 @IdMustExist 约束放在 String 字段上,我不会收到上述错误。我的代码在 IdMustExistValidator.java 中崩溃。我不明白为什么 Hibernate 可以为“String”类找到验证器,但不能为域类“Class1”找到验证器。
我的类定义如下。
Class2.java
IdMustExist.java
IdMustExistValidator.java(请注意这个类设计有bug)
}
java - 有没有办法使用 JSR-303(休眠)注释并使用 {0} {1} 语法修改消息?
有没有办法使用 JSR-303(休眠)注释并使用 {0} {1} 语法修改消息?似乎使用 Spring Validator 可以为您提供以下信息:
字符串 args[] = {"mark", "is", "cool"};
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "aboutYou", "aboutYou.required", args);
所以我可以更改消息。但是,如果我使用注释,则无法使用消息参数。我知道要使用的参数是有限的(最小、最大等),但我们想要做一个通用的声明并添加一些文本。
java: @NotEmpty (message="validation.name.required") 私有字符串名称;
属性 validation.name.required={0} 是必需的...
输出:
全名是必需的。
spring - 自定义 spring 验证错误
我想自定义弹簧验证错误
但我做不到。要遵循的步骤是什么?
jsf - JSF 2.0:如何跳过 JSR-303 bean 验证?
单击按钮时,如何使用 JSF 跳过 JSR-303 Bean 验证?
解释一些方法的有点冗长的问题......考虑一个表格中的列表:
当用户单击添加或删除行时,该操作应在未经验证的情况下执行。问题是,JSF 重新呈现整个列表并尝试验证它。如果有未验证的草稿更改,则会发生验证错误,并且永远不会调用侦听器方法(因为验证失败会阻止这种情况)。但是,添加immediate="true"
到 f:ajax 允许方法在验证错误的情况下执行。但是,仍然会出现验证错误,并在此处显示。
我看到两个选项:
1) 使用 immediate="true" 并且不显示验证错误
对于非验证按钮,设置 immediate="true" 并且对于 h:messages 执行:
然后设置保存按钮(实际上应该尝试保存表单)以发送该参数:
SHOW_VALIDATION
这会导致验证发生,但除非存在参数,否则根本不会显示消息。
2)有条件地在facelets中声明验证:
和保存按钮:
这会导致字段仅在VALIDATE
参数存在时才有效(=当按下保存按钮时)。
但这些似乎有点像黑客。我怎样才能简单地使用 JSR-303 Bean Validation 但在声明时跳过它?
hibernate - Bean Validation:接收 EntityNotFoundException 虽然有验证实体的约束
技术:Spring、Hibernate、JSR-303、JQuery
平台:Windows
我正在尝试实现@IdMustExist JSR-303 约束。约束的目的是检查输入的 id 值是否存在于关联表中。请参阅此链接以获取 IdMustExist.java 和 IdMustExistValidator.java 代码片段。
场景 1 - 输入了有效的 Id 值:在这种情况下,当执行 hibernate 的 EntityManager.merge 操作时,我看到执行了 @IdMustExist 约束。它成功验证输入的 Id 值是否存在于另一个关联/链接表中。Hibernate 成功完成了保存操作。我注意到在调用@IdMustExist 的验证器之前,hibernate 会为实体触发选择 SQL。
场景 2 - 输入了无效的 Id 值:在这种情况下,当执行 hibernate 的 EntityManager.merge 操作时,它会抛出 EntityNotFoundException(下面给出的堆栈跟踪),因为它找不到输入的无效 Id 的实体。我希望约束 @IdMustExist 在更新前阶段被触发,我们可以优雅地向用户显示错误消息。但在休眠进入更新前阶段之前,似乎有些事情失败了。我看到休眠触发实体的选择 SQL,然后抛出 EntityNotFoundException。它没有机会调用 validate @IdMustExist。
这是否意味着,我无法通过 JSR-303 验证输入的 Id 是否存在于关联/链接表中?有什么选择吗?
提前感谢您的帮助。J.P
HibernateClass2Dao.java
Class2ServiceImpl.java
Class2Controller.java
java - 是否有使用带注释的方法参数启用 JSR 303 Bean 验证的标准方法
我一直在四处寻找一段时间,但没有运气。我没有使用 Spring MVC,但仍想使用@javax.validation.Valid
来启用方法参数的验证。举个例子
使用 MVC,可以@Controller
通过简单的方式为带注释的 bean启用此功能<mvc:annotation-driven/>
(请参阅5.7.4.3 配置 JSR-303 验证器以供 Spring MVC 使用)。
使用 AOP 应该很简单。不过,我怀疑有一些标准的方法可以做到这一点。因此,问题是:非 MVC 应用程序和非控制器 bean 是否有类似的事情来启用带注释的 bean 的输入验证?
java - JSR303:尝试自定义约束冲突以与类级关系约束验证器中的子路径相关联
我正在使用 JSR303 并创建了一个类级别的约束,该约束在一个表单中比较密码及其确认,我将在此将其命名为 @SameAs 约束。理想情况下,我希望将约束与预期目标(confirmPassword)相关联,但显然封闭的 bean 不可用于提取密码道具。- 因此是类级别的约束。
我感兴趣地阅读了其他帖子,演示如何利用类级约束来验证关系,但找不到任何解释如何自定义约束违反以与子路径相关联的内容,在这种情况下是两个字段之一在关系中。
我的问题如下:我如何将来自约束违规的消息与“confirmPassword”字段而不是顶级对象相关联?我尝试使用 javax.Validator.validate(target, context) 的上下文参数,但是在 @SameAs 的验证器中添加一个节点会导致级联中的下一个约束出现异常(尝试提取 confirmPassword -> orderNumber 属性而不是 order -> orderNumber ) 结果。
目前,我通过创建一个额外的属性来存储约束消息,该属性被提取出来以在 Web 层上的 confirmPassword 输入字段附近使用,从而使用了一个丑陋的组合。
当然我在这里遗漏了一些东西......请参见下面的示例
感谢您的任何评论
例子
jsf - JSF 2.0:设置验证时,复合组件内的 h:inputText 因非字符串对象而失败
在支持 bean 中:
如果我有如下形式:
这工作正常。但是,如果我做类似的事情
并在内部形式中调用它,而不是直接h:inputText
如下所示:
但后来我得到:
根本原因是:
如果我删除验证,它会起作用。此外,如果foo
是 type String
,它也适用于验证。
我尝试使用cc:editableValueHolder
,定义不同的类型(也省略它)和其他一些技巧,但我有点不确定如何实际实现这一点。或者它是一个错误?好像忘记使用转换器了?我误解了什么吗?
jsf-2 - JSR303 ConstraintValidator,如何在没有错误页面的情况下显示消息
我正在使用 JSF 2.0 和 Glassfish v3。我正在测试 JSR303 bean 验证的功能,所以我创建了一个验证器,它实现ConstraintValidator
然后在我想要验证的属性上注释它。
它工作正常,但它显示 Glassfish 默认错误页面。我不希望显示此内容,我希望将消息显示在 a<h:outputText>
或其他内容中。
有谁知道如何实现这一目标?
这是我的验证器方法:
PS:我知道有更简单的方法来验证字符串的长度,但上面的代码片段仅用于演示/测试目的。我对验证者有另一个计划。