복붙노트

[SPRING] Spring Boot + Thymeleaf가 메시지 속성을 찾지 못함

SPRING

Spring Boot + Thymeleaf가 메시지 속성을 찾지 못함

Spring Boot와 Thymeleaf를 사용하여 웹 응용 프로그램을 만들려고하는데 템플릿이 등록 정보 파일에 정의 된 메시지를 사용하는 데 문제가 있습니다. 대신 속성 파일에 정의 된 메시지 대신 ?? form.welcome_en_GB ?? 콘솔에 오류가 로깅되지 않습니다.

프로젝트 구조는 다음과 같습니다.

──┬ 🗁 src
  │   └─── 🗁 main
  │       ├─── 🗁 java
  │       │   └─── 🗁 com
  │       │       └─── 🗁 package
  │       │           ├─── 🗁 controller
  │       │           │   └─── FormController.java
  │       │           ├─── Application.java
  │       │           └─── ServletInitializer.java
  │       └─── 🗁 resources
  │           ├─── 🗁 static
  │           │   └─── home.html
  │           ├─── 🗁 templates
  │           │   ├─── form.html
  │           │   └─── form.properties
  │           └─── application.properties
  └─── pom.xml

Application.java

@SpringBootApplication
public class Application {

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

ServletInitializer.java

public class ServletInitializer extends SpringBootServletInitializer {

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

FormController.java

@Controller
@RequestMapping("/form")
public class FormController {
    private static final Logger log = LoggerFactory.getLogger(FormController.class);

    @RequestMapping(value = "/new", method = RequestMethod.GET)
    public ModelAndView getNewReportForm() {
        log.info("New form requested");
        ModelAndView mav = new ModelAndView("form");
        return mav;
    }
}

form.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Form</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <link rel="stylesheet" type="text/css" media="all"/>
</head>
<body>
<p th:text="#{form.welcome}">Welcome!</p>
</body>
</html>

form.properties

form.welcome=Hello there!

해결법

  1. ==============================

    1.form.properties의 이름을 messages.properties로 변경하고 리소스 폴더의 루트에 위치 시키면 스프링 부트가 자동으로 선택 될 것입니다.

    form.properties의 이름을 messages.properties로 변경하고 리소스 폴더의 루트에 위치 시키면 스프링 부트가 자동으로 선택 될 것입니다.

    여러 개의 메시지 파일이있을 때이를 명시 적으로 MessageSource 빈에 나열하여 MVC 자동 구성에서 선택합니다 (예 :

    @Bean
    public MessageSource messageSource() {
        final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasenames("classpath:/some-mvc-messages", "classpath:/some-other-mvc-messages", "classpath:/another-projects/mvc-messages");
        messageSource.setUseCodeAsDefaultMessage(true);
        messageSource.setDefaultEncoding("UTF-8");
        messageSource.setCacheSeconds(5);
        return messageSource;
    }
    
  2. ==============================

    2.messages.properties 파일을 사용할 때 같은 문제가 있습니다. 스프링 부트 파일에 @EnableAutoConfiguration이 추가되지 않았습니다.

    messages.properties 파일을 사용할 때 같은 문제가 있습니다. 스프링 부트 파일에 @EnableAutoConfiguration이 추가되지 않았습니다.

     @SpringBootApplication
     @EnableAutoConfiguration
        public class Run {
    
            public static void main(String[] args) {
                SpringApplication.run(Run.class, args);
                System.out.println("Run");
            }
    
        }
    

    그것의 일을 추가 한 후에

  3. from https://stackoverflow.com/questions/36545667/spring-boot-thymeleaf-not-finding-message-properties by cc-by-sa and MIT license