springmvc + freemarker +sitemesh

2023-10-26

这3都加起来,很难。网上没有解决方案,用了一天才把环境搭起来。

记录如下。

先把springmvc 在 web.xml上的配置:

   <servlet>

        <servlet-name>xxx-ftl</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!-- <init-param>

            <param-name>contextClass</param-name>

            <param-value>

                org.springframework.web.context.support.AnnotationConfigWebApplicationContext

            </param-value>

        </init-param>-->

        <init-param>

            <param-name>contextConfigLocation</param-name>

            <param-value>/WEB-INF/spring/xxx-mvc-ftl.xml</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

    <!--为DispatcherServlet建立映射 -->

    <servlet-mapping>

        <servlet-name>xxx-ftl</servlet-name>

        <url-pattern>*.htm</url-pattern>

    </servlet-mapping>

这里规定了一下freemarker的配置文件的名字。xxx-mvc-ftl.xml。

 以下是xxx-mvc-ftl.xml的配置:


<bean id="freemarkerConfig"    class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

        <property name="templateLoaderPaths">

            <list>

                <value>/WEB-INF/freemarker/</value>

                <value>/</value>

                <value>classpath:modules</value>

                <value>classpath:org/springframework/web/servlet/view/freemarker</value>

            </list>

        </property>

        <!--   直接将Freemarker.propertyies写在单独的.properties注入进来-->

        <property name="freemarkerSettings">

            <props>

                <!--<prop key="template_update_delay">60000</prop>-->

                <prop key="default_encoding">UTF-8</prop>

                <prop key="locale">zh_CN</prop>

                <prop key="datetime_format">MM/dd/yyyy</prop>

                <prop key="number_format">#</prop>

                <prop key="whitespace_stripping">true</prop>



            </props>

        </property>

        <!--全局变量部分-->

        <property name="freemarkerVariables">

            <map>

                <entry key="xml_escape" value-ref="fmXmlEscape"/>

                <entry key="html_escape" value-ref="fmHtmlEscape" />

                <entry key="webRoot" value="${webRoot}"/>

                <entry key="cssRoot" value="${cssRoot}"/>

                <entry key="jsRoot" value="${jsRoot}"/>

            </map>

        </property>

        <property name="defaultEncoding" value="utf-8"/>

    </bean>

    <bean id="viewResolverFreemarker"  class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">

        <!--<property name="cache" value="true"/>-->

        <property name="suffix" value=".ftl"/>

        <!--如果你需要使用Spring 对 FreeMarker 宏命令的支持, 将这个属性设为true-->

        <property name="exposeSpringMacroHelpers" value="true"/>

        <property name="contentType" value="text/html;charset=UTF-8"/>

        <property name="order" value="1" />

    </bean>

    <bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>

    <bean id="fmHtmlEscape" class="freemarker.template.utility.HtmlEscape" />


下是decorators.xml和网上一样。

<?xml version="1.0" encoding="UTF-8"?>

<decorators defaultdir="/includes/decorators">
    <excludes>
        <pattern>index.html</pattern>
    </excludes>
    <decorator name="main" page="main.dec">
        <pattern>*.htm</pattern>
    </decorator>

</decorators>

重点来了。要把以下加入web.xml里面

   <!--sitemesh-->

      <filter>

        <filter-name>sitemesh</filter-name>

        <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>sitemesh</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!--sitemesh freemarker-->

    <servlet>

        <servlet-name>sitemesh-freemarker</servlet-name>

        <servlet-class>com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet</servlet-class>

        <init-param>

            <param-name>TemplatePath</param-name>

            <param-value>/</param-value>

        </init-param>

        <init-param>

            <param-name>default_encoding</param-name>

            <param-value>UTF-8</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>



    <servlet-mapping>

        <servlet-name>sitemesh-freemarker</servlet-name>

        <url-pattern>*.dec</url-pattern>

    </servlet-mapping>


<url-pattern>*.dec</url-pattern> 这里我把sitemesh的模板后缀名定为 .dec,所以就用这个过滤!


完毕!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springmvc + freemarker +sitemesh 的相关文章

  • 在 Mercurial 中进行合并时忽略空格

    在 Mercurial 中进行合并时 我们遇到了一个问题 其中空白更改会导致合并冲突 从而掩盖了我们可能遇到的任何 真实 冲突 并使合并成为一场噩梦 我们最近遵循了一种格式样式 该样式更改了某些分支中文件的缩进 并且从那时起合并几乎变得不可
  • CVS 和 Subversion 可以设置为忽略合并中的空格吗?

    CVS 和 Subversion 都有一个方便的合并功能 因此当您更新已修改的源文件时 它会合并其他人对同一文件所做的更改 但是 如果您的更改与其他更改不兼容 通常如果您都更改了代码的相同部分 则会产生冲突 这两段源代码都将包含在合并的文件
  • numpy 数组的缓存装饰器

    我正在尝试为具有 numpy 数组输入参数的函数制作一个缓存装饰器 from functools import lru cache import numpy as np from time import sleep a np array 1
  • xargs的默认分隔符可以更改吗?

    我想要以下行为 而不必使用选项显式指定它 xargs d n 与大多数命令不同 您不能只使用别名 因为管道无法识别别名 顺便说一句 为什么要这样设计 我也尝试创建自己的 bin xargs脚本 但我认为这并不像在脚本中读取 作为字符串那么简
  • 循环语句的 freemarker 模板

    我想在 freemarker 模板中创建 for 语句 我正在阅读指南http freemarker sourceforge net http freemarker sourceforge net 但只有清单 我如何创建 for 语句或 f
  • 将新行 /n 转换为角度换行符

    我有一个包含换行符 n 的字符串 尝试显示 字符串 它不会将 n 作为新行 而是将 n 显示为文本 scope myOutput Hello n myOutput textFormat 必需 gt 你好 在 html 页面上 Tried a
  • git 空格问题

    空白冲突很糟糕 空白最终对我来说是一种可怕的痛苦 在使用 git 时 git config apply whitespace strip 似乎增加了你发生冲突的机会 当你脱掉 不需要的空白 然后其他合作者会看到被剥离的空白 空格作为他们提交
  • python中装饰器类的解释

    在阅读一些 python 模块时 我遇到了这个装饰器类 this decorator lets me use methods as both static and instance methods class omnimethod obje
  • 即使将frameborder设置为0后,iframe边框周围仍然存在空白

    即使将 iframe 中的frameborder属性设置为0后 iframe边框周围仍然存在一些空白 与原始url 链接页面不同 有没有其他方法可以消除空白 或者必须在 iframe 周围呈现一些白色 因为它位于网页 或其一部分 内 并且不
  • 如何检查一个字符是否等于一个空格?

    这是我所得到的 private static int countNumChars String s for char c s toCharArray if Equals c 但该代码表示 找不到该方法的符号 我记得 Java 有一个这样的比
  • 带有装饰器和会话的 django 类视图

    我正在尝试将一些 django 视图从基于函数的视图转换为基于类的视图 但遇到了一个小问题 我的面向对象有点弱 我认为问题是我已经不知道事情的进展情况 我有一个自定义的登录装饰器 我需要在视图上使用 所以我 首先我有这个例子中的 View
  • python setattr 用于带有装饰器的动态方法创建器

    我有一个定义了多个方法的类 import mat class Klass object mat sell mat CanSet def method1 self return None mat sell mat CanSet def met
  • 使用来自不同模块的 python 装饰器函数

    我想使用另一个模块中的函数作为装饰器 但我需要它来操作当前模块的全局命名空间 例如 我希望能够从这里开始 class SomeClass pass root SomeClass to this from othermodule import
  • Java 装饰器模式:我可以装饰受保护的方法吗?

    我想要Decorate 装饰器设计模式 一个通用的基类 但是我需要的方法Decorate受到保护 参见示例 public class AbstractActor public void act Delegates its actions t
  • 当存在变量空间分隔列时,在 python (numpy) 中加载数据集

    我有一个包含数字数据的大数据集 并且在其某些行中存在分隔列的可变空间 例如 4 5 6 7 8 9 2 3 4 当我使用这条线时 dataset numpy loadtxt dataset txt delimiter 我收到此错误 Valu
  • C# 中集合作为装饰器

    在设计集合基础设施时 我们遇到了一个非常 明显 的问题 假设您需要实现许多 子 类型的集合 其中一个方面是存储相关 list array等等 而另一个是行为相关 ordered 仅删除 可观察到的 每次更改时都会触发一个事件 等 显然 再次
  • Python 元类有什么用?

    元类可以用其他方式做不到的事情做什么 Alex Martelli 表示 有些任务如果没有元类就无法完成Python 元类与类装饰器 https stackoverflow com questions 1779372 python metac
  • 空白/冷融合

    停止 ColdFusion 输出空白的正确方法是什么 我知道有cfcontent and cfsetting enableCFoutputOnly 这样做的正确方法是什么 此外
  • 为什么 Visual Studio 编辑器在空白处显示点?

    我在 Visual Studio 文本编辑器中遇到了一个奇怪的错误 我所有的空格都被替换为 public class Person int age 看起来像这样 public class Person int age 我将设置重置为默认值
  • Freemarker 和 Struts 2,有时它计算为序列+扩展哈希

    首先我要说的是 使用 Struts2 Freemarker 真是太棒了 然而有些事情让我发疯 因为我不明白为什么会发生这种情况 我在这里问是因为也许其他人有一个想法可以分享 我有一个动作 有一个属性 说 private String myT

随机推荐