我收到xml并通过jaxb将其转换为bean。我需要验证xml,我不想使用xsd或其他xml验证方法。我喜欢使用注释和bean验证方法。我如何在java se环境中验证bean?但是,最好的解决办法是在JAXB框架JSR 303在java SE或jaxb中的Bean验证
4
A
回答
2
更新
我最初解释了一个问题,“我怎么做JAXB模式派生类JSR 303,可验证”实现JSR 303的验证。在讨论后,OP出现了另一个问题。不过,我会留下我的答案,因为我认为这可能对通过关键字查找此问题的其他人有帮助。
但这不是OP问题的答案,对此抱歉。
请参阅krasa-jaxb-tools
Jsr303Annotations
插件。
生成:
- 所有复杂类型@Valid注释,可以进一步限制为仅生成用于从定义的模式类型: -XJsr303Annotations:的targetNamespace =为对象http://www.foo.com/bar
- @NotNull注解具有MinOccur值> = 1或对于具有所需使用的属性
- @Size对于列表具有minOccurs> 1
- @Size如果存在我SA最大长度或的minLength或长度限制
- @DecimalMax用于限制maxInclusive,便会
- @DecimalMin为minInclusive限制
- @DecimalMax为maxExclusive限制,使新的参数(含=假)其中:-XJsr303Annotations:JSR_349 =真
- @DecimalMin for minExclusive限制,启用新参数(包含= false):-XJsr303Annotations:JSR_349 = true
- @Digits是否存在totalDigits或fractionDigits限制。
- @Pattern如果是有规律的限制
1
我不能明白,我怎么可以运行krasa,JAXB的工具,我找到了另一种解决方案。这是休眠,验证 依赖性:
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.el</artifactId>
<version>2.2.4</version>
</dependency>
和Java代码:
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
x = validator.validate(bean).size(); // x=0 good; x!=0 bad
它不漂亮,但它的工作原理
0
我有类似的情况。 我使用Java 7,Jax-RS(cxf),Spring(核心),在servlet容器(Tomcat 7)中开发REST服务。 我没有持久层(它是基于Lucene/Solr的搜索后端),我没有使用任何托管环境(除了Spring的DI)。
我有一个pojo类(MyPojo),我创建了一个约束(MyPojoConstraint)及其底层验证器(MyPojoValidator)。
注意:不是通过Spring 注创建的POJO实例:约束是一个类级别的约束
所以,MyPojo是成才这样的:
@MyPojoConstraint
public class MyPojo {
// members
// getters/setters
}
在开始的时候,我以为把@MyPojoConstraint注释将是足够的/魔术的(即创建类的实例时,验证将完成)。
但是什么也没有发生。我试着使用@Valid注解,在构造函数中使用它。但它没有奏效。
我结束了书面方式这样的代码:
MyPojo p = new MyPojo(....);
// Proceed to validation
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<SuggestMRRequestParameters>> constraintViolations = validator.validate(p);
if(constraintViolations.size() > 0){
throw new ConstraintViolationException(constraintViolations);
}
我的理解现在是:
-
如果你有“管理豆”(通过Spring或实体管理器),其 生命周期
- 如果只有pojo /非托管bean,则必须以编程方式执行验证程序:in so我而言,我想AOP可能是有用的做到这一点,避免写太多的样板代码
,我将不胜感激,如果有人可以证实我的理解或纠正我,如果我错了
感谢
Philippe
相关问题
- 1. JSR 303 Bean验证春季
- 2. Grails:如何处理JSR 303 bean验证
- 3. 编程Bean验证(JSR 303)无注释
- 4. JSR-303 Bean验证序列化结果
- 5. kotlin数据类+ bean验证jsr 303
- 6. 使用Spring和iBatis JSR-303 bean验证
- 7. JSR-303 Bean验证在验证时更改值
- 8. JSR 303的验证覆盖
- 9. JSR 303 Bean验证+ Javascript客户端验证
- 10. 如何在Facelets中启用JSR-303 bean验证?
- 11. GWT验证(JSR 303)SampleValidatorFactory
- 12. 验证用于生成JAXB类(JSR 303 /弹簧)
- 13. 的JSR 303 Bean验证,扩展ConstraintValidator不能使用CDI
- 14. JSF 2.0:如何跳过JSR-303 bean验证?
- 15. JSF 2:Bean验证JSR 303 notnull:返回模型值
- 16. 用Mockito和Autowiring测试JSR 303 bean验证单元
- 17. 嵌套的Jsr 303验证注释
- 18. 没有字节代码编织的Java JSR-303自动Bean验证
- 19. 当EAR内部没有触发Bean验证(JSR 303)和Hibernate验证
- 20. 春季单元测试JSR-303验证
- 21. JSR-303验证与自定义消息
- 22. 启用JSR-303注解验证
- 23. Spring MVC和JSR 303 - 手动验证
- 24. GWT JSR 303客户端验证
- 25. JSR-303添加默认验证消息
- 26. 使用JSR-303自定义验证
- 27. 弹簧3,JSR-303(豆验证)和验证集合
- 28. jsr-303验证春天mvc应用程序不验证
- 29. 使用JSR-303验证器而不是Spring验证器
- 30. 如何在Java SE 1.6中实现bean验证
您的Java类是否已经有JSR 303注释? – lexicore 2014-11-14 16:20:04
@lexicore是的,当然 – user1182583 2014-11-15 13:00:50
好的,那就是另外一回事了。这并不明显,对不起。 – lexicore 2014-11-15 15:48:12