4

我編寫自定義消息插值。我希望JPA將使用我的自定義消息插值。這裏http://docs.jboss.org/hibernate/validator/4.2/reference/en-US/html/validator-bootstrapping.html#section-message-interpolator我發現下面的描述:如何使用Hibernate配置自定義消息插值?

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?

回答

0

的JSR-303 Bean驗證框架提供了通過XML配置validatation框架的可能性。

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> 

包跟你的持久罐子(META-INF/validation.xml中),它應該工作的XML文件。

根據您的部署打包(例如EAR),可能需要將其放入EAR的lib文件夾的共享庫中。

Hibernate文檔說:

的關鍵在於使XML配置Hibernate驗證是 文件的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

+0

如何與JPA做/休眠? – alexsmail

+0

我已經更新了我的答案。我認爲你只需要把它放在類路徑上,它就會被驗證框架拾取。不過,您仍然可以創建驗證器並覆蓋xml配置。 –

相關問題