【问题标题】:NoSuchRendererException: Cannot find a renderer named 'freemarker'NoSuchRendererException:找不到名为“freemarker”的渲染器
【发布时间】:2015-09-17 12:58:02
【问题描述】:

我正在尝试制作一个同时使用 Tiles、Spring 和 FreeMarker 的应用程序。我的项目只使用 Tiles 和 Spring,但是当我尝试在 Tiles 模板中使用 ftl 文件时出现错误

org.apache.tiles.request.render.NoSuchRendererException: Cannot find a renderer named 'freemarker'
at org.apache.tiles.request.render.BasicRendererFactory.getRenderer(BasicRendererFactory.java:57)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:252)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:397)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:238)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:221)
at org.apache.tiles.renderer.DefinitionRenderer.render(DefinitionRenderer.java:59)
at org.springframework.web.servlet.view.tiles3.TilesView.renderMergedOutputModel(TilesView.java:132)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:745)

这就是我的图块模板的样子

<!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>

    <!-- Default Main Template -->
    <definition name=".mainTemplate" template="/templates_ftl/main.ftl" templateType="freemarker">
        <put-attribute name="title" value="Permissions Editor" type="string" />
        <put-attribute name="footer" value="/templates_ftl/footer.ftl" type="freemarker" />
        <put-attribute name="body" value="/templates_ftl/blank.ftl" type="freemarker" />
    </definition>

    <definition name="login" extends=".mainTemplate">
    </definition>
</tiles-definitions>

这只是我正在努力使 FreeMarker 正常工作的一个小示例,因此我可以将它与我的项目的其余部分一起使用。这是控制器。

    @RequestMapping(value = "/")
    public String login(@ModelAttribute("LoginInfo") LoginInfo info, HttpServletRequest request) {
        logger.info("First visit to login page");

        if (HttpUtility.getInstance().compareSession(request)) {
            logger.info("Leaving initial login page with user already logged in, sending to show_roles page");
            return "show_roles";
        }
        logger.info("Leaving initial login page sending to login submit");
        return "login";
    }

【问题讨论】:

    标签: spring-mvc freemarker tiles


    【解决方案1】:

    我通过添加解决了它

    <#assign tiles=JspTaglibs["http://tiles.apache.org/tags-tiles"]>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    

    到我的 ftl 文件的顶部

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 2022-10-22
      • 2012-07-12
      • 2012-04-28
      相关资源
      最近更新 更多