Search code examples
spring-mvcelhibernate-validator

Hibernate expression language does not work


I am using spring + hibernate validator. I am trying to use ${validatedValue} but it does not work. My core dependencies:

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.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>

My field is annotated by @Email with validatedValue provided as EL:

    @Column(name = "VALUE_", nullable = false)
    @Email(message = "Specified e-mail address: ${validatedValue} is invalid.")
    private String value;

If I provide "thisIsNotEmail" as email validation results me in "Specified e-mail address: $validatedValue is invalid" message not "Specified e-mail address: thisIsNotEmail is invalid". Do anyone has idea why it is not working? I tryed on WindFly10 and Pivotal 3.1 but still no luck to get it work...

I would like to have a result like here: http://www.journaldev.com/3626/hibernate-validator-jsr303-example-tutorial


Solution

  • Solved by changing configuration of messageSource.. I got useCodeAsDefaultMessage to true which should be false:

    messageSource.setUseCodeAsDefaultMessage(false);
    

    Full bean:

        @Bean
        public MessageSource messageSource() {
            ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
            messageSource.setBasename("i18n/messages");
            messageSource.setDefaultEncoding("UTF-8");
            messageSource.setUseCodeAsDefaultMessage(false);
            messageSource.setFallbackToSystemLocale(false);
            return messageSource;
        }