Добавление нового преобразователя представления - PullRequest
0 голосов
/ 18 октября 2018

Я создал модуль в проекте Spring-boot и хочу перенаправить контроллер на представление в этом модуле.Я не могу найти решение, и я пробовал разные варианты.Теперь я добавляю преобразователи шаблонов в свой WebMvcConfig, и один из них в корневые шаблоны работает, но я не могу заставить работать другой.Любая идея, пожалуйста?

Вот это WebMvcConfig:

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

@Bean
public ClassLoaderTemplateResolver templateModuleResolver() {

    ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();

    templateResolver.setPrefix("espmonitor/src/main/resources/templates/");
    templateResolver.setCacheable(false);
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode("HTML5");
    templateResolver.setCharacterEncoding("UTF-8");

    return templateResolver;
}

@Bean
public ClassLoaderTemplateResolver templateRootResolver() {

    ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();

    templateResolver.setPrefix("templates/");
    templateResolver.setCacheable(false);
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode("HTML5");
    templateResolver.setCharacterEncoding("UTF-8");

    return templateResolver;
}


@Bean
public SpringTemplateEngine templateEngine() {

    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.addTemplateResolver(templateModuleResolver());
    templateEngine.addTemplateResolver(templateRootResolver());
    return templateEngine;
}

@Bean
public ViewResolver viewResolver() {

    ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
    viewResolver.setTemplateEngine(templateEngine());
    viewResolver.setCharacterEncoding("UTF-8");

    return viewResolver;
}

Контроллер вида:

@RequestMapping("/index_esp_monitor")
public String espMonitor(Model model){

return "index_esp_monitor";
}

Структура моего проекта:

enter image description here

1 Ответ

0 голосов
/ 23 октября 2018

Мне удалось заставить его работать, и я собираюсь показать решение здесь на тот случай, если кто-то пытается сделать подобное.

Я пытался создать много приложений в одном проекте и пыталсяесть каждое приложение в отдельном модуле.

Сначала я создал модули в проекте и добавил дополнительный модуль в качестве селектора.Затем я удаляю папку src из проекта и добавляю модули в проект pom

<modules>
    <module>espmonitor</module>
    <module>seed</module>
    <module>selector</module>
</modules>

И pom каждого модуля содержит:

<parent>
    <artifactId>SeedCert</artifactId>
    <groupId>com.niab</groupId>
    <version>0.0.1</version>
</parent>

Структура проекта следующая: модуль selector будет содержать индексы для других модулей.

enter image description here

Application.java настроен для сканированияконфигурации других модулей.

@ComponentScan({
    "com.niab.config",
    "com.niab.selector.controller"
})

Каждый модуль имеет пакет com.niab.config для конкретного сканирования

enter image description here

Я не уверен, еслиэто самый элегантный способ сделать это, но это довольно простое решение, и оно делает то, что мне нужно.

...