是否有一个简单的示例用于通过Seam验证验证方法参数?

是否有一个简单的示例用于通过Seam验证验证方法参数?,seam,hibernate-validator,Seam,Hibernate Validator,我被卡住了。。。 我知道,这很好,我知道有Seam验证可以帮助我在Hibernate Validator 4.2.0中验证我的方法参数 我重构了上面的示例以使用Seam验证: 用Seam Validation的类替换了自动验证和验证Interceptor 将beans.xml更改为使用org.jboss.seam.validation.ValidationInterceptor 将CdiMethodValidationTest更改为使用Seam验证的ValidationInterceptor

我被卡住了。。。 我知道,这很好,我知道有Seam验证可以帮助我在Hibernate Validator 4.2.0中验证我的方法参数

我重构了上面的示例以使用Seam验证:

  • 用Seam Validation的类替换了
    自动验证
    验证Interceptor
  • beans.xml
    更改为使用
    org.jboss.seam.validation.ValidationInterceptor
  • CdiMethodValidationTest
    更改为使用Seam验证的
    ValidationInterceptor
  • 在Maven POM中添加了
    seam验证api
    seam验证
    3.1.0.Final
  • 将POM中的
    arquillian-weld-se-embedded-1
    更改为
    arquillian-weld-ee-embedded-1.1
我得到的只是

java.lang.NoSuchMethodError: org.jboss.weld.bootstrap.api.Bootstrap.parse(Ljava/lang/Iterable;)Lorg/jboss/weld/bootstrap/spi/BeansXml;
at org.jboss.arquillian.container.weld.ee.embedded_1_1.mock.TestContainer.<init>(TestContainer.java:215)
at org.jboss.arquillian.container.weld.ee.embedded_1_1.WeldEEMockContainer.deploy(WeldEEMockContainer.java:76)
at org.jboss.arquillian.impl.handler.ContainerDeployer.callback(ContainerDeployer.java:62)
at org.jboss.arquillian.impl.handler.ContainerDeployer.callback(ContainerDeployer.java:50)
at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63)
at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEventContext.java:115)
at org.jboss.arquillian.impl.EventTestRunnerAdaptor.beforeClass(EventTestRunnerAdaptor.java:96)
at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:162)
at org.jboss.arquillian.junit.Arquillian$3$1.evaluate(Arquillian.java:186)
at org.jboss.arquillian.junit.Arquillian$MultiStatementExecutor.execute(Arquillian.java:297)
at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:182)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:127)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
java.lang.NoSuchMethodError:org.jboss.weld.bootstrap.api.bootstrap.parse(Ljava/lang/Iterable;)Lorg/jboss/weld/bootstrap/spi/BeansXml;
位于org.jboss.arquillian.container.weld.ee.embedded_1_1.mock.TestContainer.(TestContainer.java:215)
位于org.jboss.arquillian.container.weld.ee.embedded_1_1.WeldEEMockContainer.deploy(WeldEEMockContainer.java:76)
位于org.jboss.arquillian.impl.handler.ContainerDeployer.callback(ContainerDeployer.java:62)
位于org.jboss.arquillian.impl.handler.ContainerDeployer.callback(ContainerDeployer.java:50)
位于org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63)
位于org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEventContext.java:115)
位于org.jboss.arquillian.impl.EventTestRunGenerator.beforeClass(EventTestRunGenerator.java:96)
位于org.jboss.arquillian.junit.arquillian$2.evaluate(arquillian.java:162)
位于org.jboss.arquillian.junit.arquillian$3$1.evaluate(arquillian.java:186)
位于org.jboss.arquillian.junit.arquillian$multistatentexecutor.execute(arquillian.java:297)
位于org.jboss.arquillian.junit.arquillian$3.evaluate(arquillian.java:182)
位于org.junit.runners.ParentRunner.run(ParentRunner.java:236)
位于org.jboss.arquillian.junit.arquillian.run(arquillian.java:127)
位于org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
位于org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

我做错了什么?

您的课程路径上有哪种版本的Weld?您的Arquillian容器需要Weld 1.1,您是否还有旧版本?也就是说,我强烈建议考虑使用Bean验证1.1 /Hibernate验证程序5,它还提供了与CDI的集成。Seam验证不再积极维护。嗨,Gunnar!感谢您的评论,我将POM更改为使用Weld 1.1.13.Final、Seam 3.1.0.Final、Arquillian 1.0.3.Final和Arquillian Weld 1.0.0.CR3。现在我得到了java.lang.AbstractMethodError:org.slf4j.impl.JDK14LoggerAdapter.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V位于org.jboss.weld.bootstrap.WeldBootstrap的org.slf4j.cal10n.LocLogger.info(LocLogger.java:125)(WeldBootstrap.java:206)在org.jboss.arquillian.container.weld.ee.embedded_1_1.mock.TestContainer.(TestContainer.java:211).@Gunnar Bean Validation 1.1看起来确实不错。但是,我可以在JEE 6容器(jboss EAP 6)中使用它吗?关于AbstractMethodError,似乎API和slf4j的实现版本不匹配。您需要确保两者在同一版本中使用。关于在EAP 6上使用BV 1.1/HV 5,这应该是可能的,但需要一些手动步骤。基本上,您必须用手工制作的HV模块替换应用服务器的HV模块或者HV 5。好的,谢谢你提供的信息。我认为不值得这么麻烦,我将等待Bean Validation 1.1并考虑将其集成到EAP 6中。