java - Spring Thymeleaf Hibernate 验证自定义消息在页面上不可用

标签 java spring validation thymeleaf hibernate-validator

在下面的示例中,我在 @DecimalMin 注释上有一条自定义消息。从输出中您可以看到默认消息已在 Controller 方法中正确插入。

问题是我想在 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

关于java - Spring Thymeleaf Hibernate 验证自定义消息在页面上不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29974248/

相关文章:

java - 一个32个字符的字符串如何变成46个字节?

java - 自己的 SeqLock 实现,避免自旋锁会更好吗?

spring - 查看Spring启动的嵌入式H2数据库内容

javascript - 使用jquery表单时无法提交表单

javascript - 当其他模型发生变化时,如何强制在模型上运行验证?

java - 如何将 Java 字符串转换为 ASCII 字节数组?

java - 如何在 spring 单元测试中快速模拟服务?

java - Spring boot - 使用其他项目中定义的实现

PHP XSS 预防白名单

java - CompletableFutures 的 Future 上的 get 方法