添加新的视图解析器

时间:2018-10-18 11:37:13

标签: spring-boot module thymeleaf

我在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 :(得分:0)

我设法使其正常运行,在这里展示解决方案,以防万一有人试图做类似的事情。

我试图在一个项目中拥有多个应用程序,并试图将每个应用程序置于不同的模块中。

首先,我在项目中创建了模块,并添加了一个附加模块作为选择器。然后,从项目中删除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

我不确定这是否是最优雅的方法,但这是一个非常简单的解决方案,并且可以满足我的需求。