首页 > 解决方案 > 如何在 Spring Boot WebApplication 中集成 Apache Tiles?

问题描述

我想在我的 Spring Boot 应用程序中添加 Apache 磁贴。

就像我们在 application.properties 文件中配置前缀和后缀一样,我也想知道如何配置tiles.xml。

我在 POM.xml 文件中添加了 apache tile 的 maven 依赖项,但是当我从控制器返回 tile 定义的名称时,它给出了 404 错误。

这是我的 POM.xml 文件

    <!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-jsp -->
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>3.0.8</version>
    </dependency>

这是我的tiles.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC  "-//Apache Software Foundation//DTD Tiles Configuration 
3.0//EN"  "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="home-page"
    template="/WEB-INF/layout/layout.jsp">
    <put-attribute name="body" value="/WEB-INF/pages/landing-page.jsp" />
    <put-attribute name="script" value="" />
    <put-attribute name="stylesheet" value="" />
</definition>
</tiles-definitions>

这是我的控制器方法

@Controller
public class LandingPage {

    @RequestMapping("/")
    public String landingPage() {
        return "home-page";
    }
}

这是我的 TilesConfig.java 文件

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.view.UrlBasedViewResolver;
import org.springframework.web.servlet.view.tiles3.TilesConfigurer;
import org.springframework.web.servlet.view.tiles3.TilesView;

@Configuration
public class TilesConfig {
    @Bean
    public UrlBasedViewResolver viewResolver() {
        UrlBasedViewResolver tilesViewResolver = new 
        UrlBasedViewResolver();
        tilesViewResolver.setViewClass(TilesView.class);
    return tilesViewResolver;
}

@Bean
public TilesConfigurer tilesConfigurer() {
    TilesConfigurer tilesConfigurer = new TilesConfigurer();
    String[] tilesXml = { "WEB-INF/tiles.xml" };
    tilesConfigurer.setDefinitions(tilesXml);
    return tilesConfigurer;
   }
}

标签: javaspringspring-bootapache-tiles

解决方案


确保您拥有静态资源并且视图位于正确的路径中。您可以如下配置图块视图解析器。

@Bean
public UrlBasedViewResolver viewResolver() {
    UrlBasedViewResolver tilesViewResolver = new UrlBasedViewResolver();
    tilesViewResolver.setViewClass(TilesView.class);
    return tilesViewResolver;
}

@Bean
public TilesConfigurer tilesConfigurer() {
    TilesConfigurer tilesConfigurer = new TilesConfigurer();
    String[] tilesXml = { "WEB-INF/tiles.xml" };
    tilesConfigurer.setDefinitions(tilesXml);
    return tilesConfigurer;
}

推荐阅读