使用Apache Tiles进行Spring Boot

use*_*280 7 apache spring tiles apache-tiles spring-boot

我正在尝试将我的Java应用程序迁移到Spring Boot.目前,我正在使用Apache Tiles运行Spring MVC 3.2.当我迁移到Spring Boot时,我的控制器仍被调用,他们将视图传递给视图Resolver,但是当Tiles去拉JSP文件时,事情就会崩溃.我得到的错误信息是:

13:48:46,387 TRACE org.springframework.web.servlet.handler.SimpleUrlHandlerMapping:127 - No handler mapping found for [/jsp/layout/layout.jsp]
Run Code Online (Sandbox Code Playgroud)

有人在Spring Boot中成功使用过Apache Tiles吗?有什么想法怎么做?

提前感谢任何想法!


更多细节:

@Bean
    public UrlBasedViewResolver viewResolver(){
        LOGGER.trace("Entering tiles configurer");
        UrlBasedViewResolver viewResolver = new UrlBasedViewResolver();
        viewResolver.setViewClass(TilesView.class);
        return viewResolver;
    }
    @Bean
    public TilesConfigurer tilesConfigurer(){
        LOGGER.trace("Entering tiles configurer");
        System.out.println("Entering tiles configurer");
        TilesConfigurer tilesConfigurer = new TilesConfigurer();
        String[] defs = {"/WEB-INF/tiles-defs.xml"};
        tilesConfigurer.setDefinitions(defs);
        return tilesConfigurer;
    }
Run Code Online (Sandbox Code Playgroud)

控制器:

        @RequestMapping(value="/")
        public ModelAndView index(ModelAndView mav, HttpServletRequest request, HttpServletResponse resp,RedirectAttributes ra){
            LOGGER.trace("Arrived in Home Controller");
            mav.addObject("profile",appContext.getEnvironment().getActiveProfiles()[0]);
            mav.setViewName("home");
            return mav;
        }
Run Code Online (Sandbox Code Playgroud)

瓷砖定义:

        <definition name="layout" template = "/jsp/layout/layout.jsp">
        </definition>
        <definition name="home" extends="layout">
            <put-attribute name="body" value = "/jsp/home.jsp" />
        </definition>
Run Code Online (Sandbox Code Playgroud)

bar*_*yku 5

我也遇到了类似的问题,并且能够在上面的各种答案的帮助下解决它.为了帮助将来可能遇到此问题的其他人,我在https://github.com/barryku/spring-boot-tiles上创建了一个简单的Maven项目,以包含使用Spring Boot所需的最小设置.以下是一些需要注意的事项,

  1. 渲染JSP页面需要tomcat-embed-jasper
  2. 记得使用org.springframework.web.servlet.view.tiles3而不是tiles2包
  3. Spring的tiles3集成使用jstl,因此必须包含它

我一步一步地添加了所需的文件,因此您可以在https://github.com/barryku/spring-boot-tiles/commits/master上查看提交历史记录,以便更好地了解每个步骤中添加的内容.


Pra*_*sad 0

你的定义应该是:

    <definition name="layout" template = "/WEB-INF/jsp/layout/layout.jsp">
    </definition>
    <definition name="home" extends="layout">
        <put-attribute name="body" value = "/WEB-INF/jsp/home.jsp" />
    </definition>
Run Code Online (Sandbox Code Playgroud)