jtwig-spring-boot-starter ,Defining prefix/suffix of the resolver, resource not found

jtwig-spring-boot-starter ,Defining prefix/suffix of the resolver,resource not found

代码地址:码云
最近接触到Jtwig模板引擎,遇到一个问题。想设置自己的 viewResolver,
设置之前我们先看看Jtwig源码中默认的 viewResolver的prefix/suffix配置。

jtwig默认的prefix配置

如上图,在jtwig-spring-boot-starter默认prefix为classpath:/templates/。

注意!在springboot的项目中,classpath是指项目编译后的classes文件夹。

如下图为项目结构:

项目结构

如下 为配置文件JtwigConfig.java:

@Configuration
public class JtwigConfig implements JtwigViewResolverConfigurer {

    @Override
    public void configure(JtwigViewResolver viewResolver) {

        viewResolver.setPrefix("classpath:/WEB-INF/templates/");
        viewResolver.setSuffix(".twig.html");

        viewResolver.setRenderer(new JtwigRenderer(EnvironmentConfigurationBuilder
                .configuration()
                .extensions().add(new MyExtension()).and()
                .build()));
    }

    private static class MyExtension implements Extension {
        @Override
        public void configure(EnvironmentConfigurationBuilder configurationBuilder) {
        }
    }
}

但发现总是报错,“Resource ‘/WEB-INF/templates/index/index.twig.html’ not found”。

原因是 springboot默认不会编译和打包webapp中的文件,所以编译之后的文件夹classes中根本没有 “WEB-INF/..”文件夹。

因此需要在pom.xml中加入如下配置:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <!-- 打包时将web文件拷贝到classes目录下-->
            <resource>
                <!-- 指定resources插件处理哪个目录下的资源文件 -->
                <directory>src/main/webapp</directory>
                <!--注意此次必须要放在此目录下才能被访问到-->
                <targetPath>${project.build.directory}/classes</targetPath>
                <includes>
                    <include>**/**</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/**</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

此时编译之后的文件夹目录如下图:

编译后的文件结构

此时运行项目就不会报错了。

代码地址:码云

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值