当前位置: 首页 > 知识库问答 >
问题:

从不同模块加载Freemarker模板

欧阳洲
2023-03-14

我正在尝试使用Spring MVC从多个位置加载Freemarker模板。这个项目是使用Intellij开发的。

我有两个maven项目:

>

  • 我的网站:maven的主要项目,包含自定义模板,例如WEB-INF/ftl/landing/login。ftl

    通用模板:包含位于WEB-INF/ftl的通用freemarker模板,例如WEB-INF/ftl/landing/login。ftl

    例如,Freemarker的想法是在“我的网站”中搜索登陆/登录,如果找不到,则在“通用模板”登陆/登录中搜索。

    根据freemarker模板加载器留档的freemarker.xml应该如下所示:

        <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
            <property name="templateLoaderPaths" value="generic-templates://WEB-INF/ftl/,/WEB-INF/ftl/" />
        </bean>
    
        <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
            <property name="cache" value="true"/>
            <property name="prefix" value=""/>
            <property name="suffix" value=".ftl"/>
        </bean>
    

    但我显然做了一些非常错误的事情,因为它不起作用:找不到通用模板的文件。

    你知道我该怎么做吗?(欢迎实现相同目标的其他方法)

    如何调试它?

  • 共有1个答案

    终逸仙
    2023-03-14

    方案部分(之前的部分,包括)是一些集成框架通过其自定义TemplateLoader-s使用的东西,而其他框架则没有。解释方案不是由FreeMarker本身完成的。此外,Spring对资源路径中的方案有自己的想法,这可能会干扰此机制。

    不管如何定制,方案不应该引用Maven模块名称,因为Maven模块在运行时并不存在。相反,您应该将这两组模板放在WEB-INF下的不同目录下,然后在TemplateLoaderPath中列出这两个路径,就像您所做的那样。

     类似资料:
    • 在我的应用程序中,所有freemarker模板都位于/templates/ftl/中,因此在应用程序部署期间,我加载了一个类,我调用了一个扩展FreemarkerManager并具有方法的类 这样,当我需要加载模板文件时,我可以这样做: 仅在一种特定情况下,我需要获得一个来自完全不同路径的模板(而不是/templates/ftl/)。 如何在这个特定的时刻声明模板加载的第二个目录,而不破坏所有调用

    • 为了显示这种关系,让我们开始定义一个简单的模块,作为我们的示例应用程序的根模块。 app/app.module.ts 到目前为止,这是一个非常常见的模块,依赖于,有一个路由机制和两个组件:AppComponent和EagerComponent。 现在,让我们专注于定义导航的应用程序(AppComponent)的根组件。 app/app.component.ts import { Component

    • 不管是用import还是用from mmmm import *的方式导入模块,当程序运行之后,回头在看那个存储着mmmm.py文件的目录中(关于mmmm.py文件可以看上一讲),多了一个文件: qw@qw-Latitude-E4300:~/Documents/ITArticles/BasicPython/codes$ ls mmm* mmmm.py mmmm.pyc 在这个目录下面,除了原来的

    • 模块是存在远程服务器上的,因此需要一个特殊的加载器来加载这些已经定义好的模块。 目前,根据模块化规范,对应的模块加载器有: CMD 直接执行:coolie.js 直接执行:Sea.js 链接: 如何实现一个 CMD 模块加载器 sea.js 与 RequireJS 的异同 AMD 直接执行:RequireJS。 链接: Javascript模块化编程(一):模块的写法 Javascript模块化编

    • 模块/包加载工具 SystemJS webpack Broeserify rollup.js

    • 模块加载和依赖管理 综合学习: 用 Browserify 创建 JavaScript 模块 [watch][$] Webpack 基本原理 [watch] browserify-handbook [read] ES6 模块 [read] 参考/文档: browserify system.js webpack 译者补充: React Webpack cookbook 详解前端模块化工具-Webpac