gpt4 book ai didi

hibernate - 扩展@NotEmpty 以接受其他类

转载 作者:行者123 更新时间:2023-12-05 01:48:38 25 4
gpt4 key购买 nike

我一直在尝试制作自定义 validator ,因此我可以只对特定类(在本例中为 java.util.Calendar 或 CommandItem)使用 @NotEmpty 注释。但我得到一个异常(exception):

javax.validation.UnexpectedTypeException: No validator could be found for type: com.bla.DocumentCommandItem 

现在,关于为什么它不起作用,我唯一能想到的是 @NotEmpty 注释本身声明了这一点:

@Constraint(validatedBy = { })

因此与Validator类没有直接关联。但是它如何验证字符串和集合呢?

这是我的 validator 类:

    public class DocumentNotEmptyExtender implements ConstraintValidator<NotEmpty,DocumentCommandItem> {

@Override
public void initialize( NotEmpty annotation ) {
}

@Override
public boolean isValid( DocumentCommandItem cmdItem, ConstraintValidatorContext context ) {
if ( !StringUtils.hasText( cmdItem.getId() ) && (cmdItem.getFilename() == null || cmdItem.getFilename().isEmpty()) ) {
return false;
} else {
return true;
}
}

这可能吗?

(作为旁注...我在制作自己的类似注释时也收到了此异常,但那个注释神秘地消失了。)

谢谢!

最佳答案

您必须像这样在约束映射文件中注册您的 validator :

<constraint-mappings
xmlns="http://jboss.org/xml/ns/javax/validation/mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd">

<constraint-definition annotation="org.hibernate.validator.constraints.NotEmpty">
<validated-by include-existing-validators="true">
<value>com.foo.NotEmptyValidatorForDocumentCommandItem</value>
</validated-by>
</constraint-definition>
</constraint-mappings>

此映射文件必须在 META-INF/validation.xml 中注册:

<validation-config xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration">

<constraint-mapping>/your-mapping.xml</constraint-mapping>
</validation-config>

您可以在 Hibernate validator 中了解更多信息 reference guide和 Bean 验证 specification .

关于hibernate - 扩展@NotEmpty 以接受其他类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9381256/

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