Hibernate 表达式语言不起作用
Hibernate expression language does not work
我正在使用 spring + 休眠验证器。我正在尝试使用 ${validatedValue} 但它不起作用。我的核心依赖项:
<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>
我的字段由@Email 注释,validatedValue 提供为 EL:
@Column(name = "VALUE_", nullable = false)
@Email(message = "Specified e-mail address: ${validatedValue} is invalid.")
private String value;
如果我提供 "thisIsNotEmail" 作为电子邮件验证结果,我会收到 "Specified e-mail address: $validatedValue is invalid" 消息而不是 "Specified e-mail address: thisIsNotEmail is invalid"。有谁知道为什么它不起作用?我尝试了 WindFly10 和 Pivotal 3.1,但仍然没有成功......
我想要这样的结果:http://www.journaldev.com/3626/hibernate-validator-jsr303-example-tutorial
你能试试这里的改变吗:
@Email(message = "Specified e-mail address: {validatedValue} is invalid.")
用大括号括起来的键名应该可以。
希望对您有所帮助。
通过更改 messageSource 的配置解决。我将 useCodeAsDefaultMessage 设置为 true,这应该是 false:
messageSource.setUseCodeAsDefaultMessage(false);
满豆:
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setDefaultEncoding("UTF-8");
messageSource.setUseCodeAsDefaultMessage(false);
messageSource.setFallbackToSystemLocale(false);
return messageSource;
}
我正在使用 spring + 休眠验证器。我正在尝试使用 ${validatedValue} 但它不起作用。我的核心依赖项:
<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>
我的字段由@Email 注释,validatedValue 提供为 EL:
@Column(name = "VALUE_", nullable = false)
@Email(message = "Specified e-mail address: ${validatedValue} is invalid.")
private String value;
如果我提供 "thisIsNotEmail" 作为电子邮件验证结果,我会收到 "Specified e-mail address: $validatedValue is invalid" 消息而不是 "Specified e-mail address: thisIsNotEmail is invalid"。有谁知道为什么它不起作用?我尝试了 WindFly10 和 Pivotal 3.1,但仍然没有成功......
我想要这样的结果:http://www.journaldev.com/3626/hibernate-validator-jsr303-example-tutorial
你能试试这里的改变吗:
@Email(message = "Specified e-mail address: {validatedValue} is invalid.")
用大括号括起来的键名应该可以。
希望对您有所帮助。
通过更改 messageSource 的配置解决。我将 useCodeAsDefaultMessage 设置为 true,这应该是 false:
messageSource.setUseCodeAsDefaultMessage(false);
满豆:
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setDefaultEncoding("UTF-8");
messageSource.setUseCodeAsDefaultMessage(false);
messageSource.setFallbackToSystemLocale(false);
return messageSource;
}