Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧&x2B;Hibernate验证程序:更改默认消息(不工作)_Java_Spring_Hibernate_Spring Mvc_Hibernate Validator - Fatal编程技术网

Java 弹簧&x2B;Hibernate验证程序:更改默认消息(不工作)

Java 弹簧&x2B;Hibernate验证程序:更改默认消息(不工作),java,spring,hibernate,spring-mvc,hibernate-validator,Java,Spring,Hibernate,Spring Mvc,Hibernate Validator,所以我想让自定义默认消息正常工作,就像它在这里被多次询问(并解决)一样,但我仍然无法让它正常工作 到目前为止,我的代码是: 应用程序,java @Configuration @EnableAutoConfiguration @ComponentScan public class Application extends SpringBootServletInitializer { private static Class<Application> applicationClass =

所以我想让自定义默认消息正常工作,就像它在这里被多次询问(并解决)一样,但我仍然无法让它正常工作

到目前为止,我的代码是:

应用程序,java

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {

private static Class<Application> applicationClass = Application.class;

public static void main(String[] args) {
    SpringApplication.run(applicationClass, args);
}

@Override
protected SpringApplicationBuilder configure(
        SpringApplicationBuilder application) {
    return application.sources(applicationClass);
}

@Bean(name = "messageSource")
public MessageSource messageSource() {
    ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource();
    source.setBasename("WEB-INF/messages/messages");
    source.setDefaultEncoding("UTF-8");

    return source;
}

@Bean(name = "validator")
public LocalValidatorFactoryBean validator() {
    LocalValidatorFactoryBean validatorFactoryBean = new LocalValidatorFactoryBean();
    validatorFactoryBean.setValidationMessageSource(messageSource());
    return validatorFactoryBean;
}



}
将工作正常,我得到我的自定义错误消息

但是

仍然输出标准默认消息


我怎样才能让它工作?:)

如果我没记错的话,验证程序getMessage使用了一个前缀。找出验证器试图获取哪些消息的最简单方法是断点.Sry,但我不明白你的意思。您能进一步解释一下吗?result.getFieldError(“projectName”):返回与给定字段关联的第一个错误。我相信在您的情况下也会发生同样的情况。我不知道这会如何影响错误消息…要检查使用了哪个消息键,请在此处设置断点来调试您的应用程序:
org.hibernate.validator.internal.engine.ValidationContext.interpolate()
(v5.0.2中的第362行)
messageSource.getMessage(result.getFieldError("projectName"), null)
result.getFieldError("projectName").getDefaultMessage()