Spring Thymeleaf Hibernate 验证自定义消息在页面上不可用
Spring Thymeleaf Hibernate Validation custom message not available on page
在下面的示例中,我在 @DecimalMin 注释上有一条自定义消息。从输出中,您可以看到在控制器方法中正确插入了默认消息。
问题是我想在 html 页面上使用此消息。问题是 thymeleaf 获取了代码列表中的第一个代码。我希望它使用自定义代码 {grossPay.custom.message} 但它已经解决了。它也不能作为错误代码使用。
如有任何建议,我们将不胜感激
//inside propery file
grossPay.custom.message=Dont do that
//inside model
@DecimalMin(value="0.00",message="{grossPay.custom.message}")
//inside controller
public String postResult(@Valid @ModelAttribute("myModel") CustomModel model, BindingResult result) {
for (FieldError error : result.getFieldErrors()) {
System.out.println("Field Error in field: " + error.getField() + " with default message: "+ error.getDefaultMessage());
System.out.println("codes: ");
for (String s : error.getCodes()) {
System.out.println(s);
}
}
//output
Field Error in field: grossPay with default message: Dont do that
codes:
DecimalMin.customModel.grossPay
DecimalMin.grossPay
DecimalMin.java.math.BigDecimal
DecimalMin
这是由于缺少配置造成的。您需要在配置中定义它:
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Autowired
private MessageSource messageSource;
@Override
public Validator getValidator() {
LocalValidatorFactoryBean factory = new LocalValidatorFactoryBean();
factory.setValidationMessageSource(messageSource);
return factory;
}
}
参见:https://github.com/spring-projects/spring-boot/issues/3071
在下面的示例中,我在 @DecimalMin 注释上有一条自定义消息。从输出中,您可以看到在控制器方法中正确插入了默认消息。
问题是我想在 html 页面上使用此消息。问题是 thymeleaf 获取了代码列表中的第一个代码。我希望它使用自定义代码 {grossPay.custom.message} 但它已经解决了。它也不能作为错误代码使用。
如有任何建议,我们将不胜感激
//inside propery file
grossPay.custom.message=Dont do that
//inside model
@DecimalMin(value="0.00",message="{grossPay.custom.message}")
//inside controller
public String postResult(@Valid @ModelAttribute("myModel") CustomModel model, BindingResult result) {
for (FieldError error : result.getFieldErrors()) {
System.out.println("Field Error in field: " + error.getField() + " with default message: "+ error.getDefaultMessage());
System.out.println("codes: ");
for (String s : error.getCodes()) {
System.out.println(s);
}
}
//output
Field Error in field: grossPay with default message: Dont do that
codes:
DecimalMin.customModel.grossPay
DecimalMin.grossPay
DecimalMin.java.math.BigDecimal
DecimalMin
这是由于缺少配置造成的。您需要在配置中定义它:
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Autowired
private MessageSource messageSource;
@Override
public Validator getValidator() {
LocalValidatorFactoryBean factory = new LocalValidatorFactoryBean();
factory.setValidationMessageSource(messageSource);
return factory;
}
}
参见:https://github.com/spring-projects/spring-boot/issues/3071