问题标签 [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.
java - jaxb 和 jsr303
我正在使用 jaxb 从配置中构造对象。到目前为止,我为验证编写了自定义函数,但我想进入注释。
例如:
上述方法的异常是描述性的,并为我提供了 xml 中错误的位置。
我想进入这个:
我可以通过读取 afterMarshal 中的注释并根据属性注释运行验证函数来验证这一点,但随后我丢失了发生错误的实际位置(在 xml 中)。
你有什么,我应该为这个问题使用不同的方法/框架吗?
编辑:为了澄清,我必须使用注释方法,因为我需要我正在编写的配置编辑器的属性约束元数据
java - 如何检查、抛出和捕获 bean 的验证 ConstraintViolationException
考虑以下情况:
我有一个“服务”模块,它有一个名为
ClientService
.这
ClientService
使用了一个ClientDao
在“dao”模块中调用的类。ClientDao
有方法insert(@Valid Client c)
。此方法抛出DaoException
.客户是我的实体。他的属性使用 javax bean 验证进行注释,例如
@javax.validation.constraints.NotNull
.
如果违反了某些约束,则ClientService
接收一个ConstraintViolationException
. 但ClientService
只期望DaoException
或任何其他“dao”模块的异常。我想保持这种状态,抛出仅与对象执行的任务直接相关的异常,隐藏更高层的实现细节(在这种情况下,“服务”模块)。
我想做的是封装javax.validation.ConstraintViolationException
在ValidationException
我的“dao”模块中,并在trows
子句中声明它,与DaoException
. 而且我不想自己执行验证检查(这就是我使用@Valid
注释的原因)
这是代码(抽象接口,注入和其他一切。为了简单起见)
我想将 dao 类更改为:
但我不知道如何按照我描述的方式做到这一点。
FTR,我在这个项目中使用 Spring Web Flow 和 Hibernate。dao 模块包含@Repository
类,service 模块包含@Service
类。
java - 我需要做哪些设置才能在 Spring 中使用 JSR-303 注释?
我下载了 spring 3 并将其放在我的类路径中,但我无法导入 @Valid 注释。但是,我可以导入其他 spring 3 注释(例如 @Controller)。@Valid 在什么 Jar 和什么包中?
编辑:这是一个 JSR-303 注释。这是什么意思,我如何得到它?
java - javax.validation 获取字段字段所有者对象
想象一下现在的情况:
我想为此@BiggerThan
注释编写一个自定义约束验证器。但是,似乎没有办法Alpha
在实现中获取实例ConstraintValidator
。isValid 方法的签名是
没有“对象所有者”参数。似乎也没有办法让它通过context
。
是否有可能在 javax.validator 框架中实现这一点?
我使用 hibernate-validator 作为实现,但我愿意改变它。如果需要,我会考虑与特定 jsr303 实现相关的黑客解决方案。
java - JSR303 验证 - 使用来自自定义类验证器的组
我们有一个用例,其中我们有一个结构相当糟糕的 bean,其中包含如下字段:
仅当标志 [1|2] 为真时,我们才需要验证电话/地址/城市/州 [1|2]。糟糕,糟糕的设计,理所当然。
我们当前的策略是在每个“真实”数据字段上使用@NotNull(或我们需要的任何验证),并使用组指示符,如下所示:
在我们验证此 bean 的业务逻辑中(其中包含将由“默认”验证组验证的各种其他字段),我们将违反“默认”组,然后检查 flag1 是否为真,如果因此,对 Info.First.class 运行验证,检查 flag2 是否为真,然后对 Info.Second.class 运行验证。
现在的问题......有没有办法从自定义类验证器中连接到这些组?我设想有一个类验证器,它采用 flag1/flag2 属性及其相应的自定义组,当调用 isValid 时,它会为这些组执行这些二级/三级调用。简单地说,目的是自定义类验证器将位于默认组中,因此验证此类的业务逻辑不会因为必须单独调用验证而将这种丑陋的遗留设计的细节泄漏到其中。
想法?谢谢!
java - How do I apply AOP advice to a ConstraintValidator in Spring?
I am attempting to write my own Validator
(as per the JSR-303 specification) under Spring 3.0.x.
I annotated the isValid(Serializable, CosntraintValidatorContext)
method with @Transactional
, but it seems that transactional advice is not being applied to this method - when the isValid()
method is invoked, a call to sessionFactory.getCurrentSession()
creates the Exception:
org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
I have an @Autowired
sessionFactory
in the same Validator
bean which is injected without issues. My current workaround is to use openSession()
instead of getCurrentSession()
, but that involves manual transaction management which I would prefer to avoid.
Doing a stack trace in the constructor of my validator bean, it seems that my Validator
bean is being constructed via a call to the o.s.b.f.s.AbstractAutowireCapableBeanFactory.createBean()
. I assume this means that the factory is capable of populating @Autowired
fields in my Validator
, but it seems that it is not applying any transactional advice?
Thanks in advance for any help on this matter.
EDIT: If it is of any help, I have included a partial stacktrace (via create new Exception()
) that is logged in the constructor:
Transactional configuration appears to be correct (the STS IDE reports that the isValid()
method is properly advised by the transactional manager by org.springframework.transaction.interceptor.TransactionInterceptor.invoke
(with an @Component
annotation on the Validator itself)), but my understanding is that if the validation bean is created outside the normal lifecycle of the Spring container, then the advice will not be properly applied when validation is done during data binding.
java - 使 javax 验证错误消息更具体
抱歉,如果这个问题之前已经在某个地方讨论过。如果有请给我链接,我还没有找到满意的答案。
我一直在寻找一种方法来让我的 javax 验证提供的错误消息更具体。
我当前的 @Min 注释消息在 ValidationMessages.properties 文件中指定:
这会按预期打印出来
我想要的是消息还包括验证失败的变量(和类)的名称以及失败的变量的值。所以更像。
任何帮助将不胜感激。
克利
java - 如何在 Spring MVC 中使用自定义日期属性编辑器验证日期
我已经在我的 java 类中设置了日期
这是我在控制器中使用的代码
我正在使用 JSR 注释和休眠来验证其他字段。
有什么方法可以使用注释来验证日期必须仅以 dd-mm-yyyy 格式
java - 如何在休眠验证器中为我的所有属性设置默认约束
我想自动@Valid
对我的所有属性施加约束。
例子:
我希望验证器认为所有属性都有@Valid
注释。
怎样才能做到这一点?
java - @Valid 失败时自动返回输入表单
我的控制器中有以下方法:
似乎在很多这些方法中都有一个重复的代码块:
有没有办法避免插入此块并在发生验证错误时自动重定向回 POST 请求的来源?