如何使用Hibernate配置自定义消息插值?

时间:2013-08-20 07:58:29

标签: hibernate validation jpa bean-validation hibernate-validator

我编写自定义消息插值。我希望JPA将使用我的自定义消息插值。这里http://docs.jboss.org/hibernate/validator/4.2/reference/en-US/html/validator-bootstrapping.html#section-message-interpolator我发现了以下描述:

Configuration<?> configuration = Validation.byDefaultProvider().configure();
ValidatorFactory factory = configuration
    .messageInterpolator(new ValueFormatterMessageInterpolator(configuration.getDefaultMessageInterpolator()))
    .buildValidatorFactory();

Validator validator = factory.getValidator();

但我应该在哪里编写这样的代码?在init-servlet的web.xml中?我可以在persistance.xml中提供这样的代码吗?

P.S。我复制并粘贴代码。在我的案例行

ValueFormatterMessageInterpolator(configuration.getDefaultMessageInterpolator()))

会改变这样的事情

CustomMessageInterpolator(configuration.getDefaultMessageInterpolator()))

另见How do I dynamically resolve message parameters with Hibernate Validator?

1 个答案:

答案 0 :(得分:0)

JSR-303 bean验证框架提供了通过XML配置验证框架的可能性。

E.g。 META-INF/validation.xml

一章
  

4.4.6。 XML配置:META-INF / validation.xml

详细规范:http://download.oracle.com/otndocs/jcp/bean_validation-1.0-fr-oth-JSpec/

4.4.6。 XML配置:META-INF / validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 validation-configuration-1.0.xsd">
    <default-provider>com.acme.ACMEProvider</default-provider>
    <message-interpolator>com.acme.ACMEAwareMessageInterpolator</message-interpolator>
    <constraint-mapping>META-INF/validation/order-constraints.xml</constraint-mapping>
    <constraint-mapping>META-INF/validation/catalog-constraints.xml</constraint-mapping>
    <constraint-mapping>META-INF/validation/customer-constraints.xml</constraint-mapping>
    <property name="com.acme.validation.logging">WARN</property>
    <property name="com.acme.validation.safetyChecking">failOnError</property>
</validation-config>

使用持久性jar(META-INF / validation.xml)打包xml文件,它应该可以工作。

根据您的部署包装(例如EAR),可能需要将其放在EAR的lib文件夹中的共享库中。

hibernate文档说:

  

为Hibernate Validator启用XML配置的关键是   文件validation.xml。如果此文件存在于类路径中   创建ValidationFactory时将应用配置。   例4.1,“validation-configuration-1.0.xsd”显示了一个模型视图   xsd valiation.xml必须遵守。

http://docs.jboss.org/hibernate/validator/4.0.1/reference/en/html_single/#d0e1867