`
bo_hai
  • 浏览: 554490 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

FTL 使用自定义模板的方法

 
阅读更多

前言:

1)在实际的工程中,可能存在FTL要引入相同的js或css的代码,每个页面手动copy引入js或css的代码很是麻烦。现在为大家介绍在FTl中定义模板的方法。所谓模板是指:可以指定所有的FTL页面自动加载某些代码工具。

2)在引入模板前,先要引入模板用到jar。jar的名称分别是:sitemesh-2.2.1.jar 和 struts2-sitemesh-plugin-2.0.11.2.jar。在实际的项目中,可以根据struts2的版本,现在对应jar的版本。

3)修改web.xml文件,加入以下内容:

<filter>
	<filter-name>sitemesh</filter-name>
	<filter-class>org.apache.struts2.sitemesh.FreeMarkerPageFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>sitemesh</filter-name>
	<url-pattern>*.action</url-pattern>
	<dispatcher>REQUEST</dispatcher>
	<dispatcher>FORWARD</dispatcher>
</filter-mapping>  

 注:filter-mapping的配置应和struts2对应的filter-mapping的配置相同;

 

4)在 WEB-INF目录下面创建文件:sitemesh.xml。内容如下:

<sitemesh>
	<property name="decorators-file" value="/WEB-INF/decorators.xml" />
	<excludes file="${decorators-file}" />

	<page-parsers>
		<parser content-type="text/html"
			class="com.opensymphony.module.sitemesh.parser.FastPageParser" />
	</page-parsers>

	<decorator-mappers>

		<mapper
			class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
			<param name="property.1" value="meta.decorator" />
			<param name="property.2" value="decorator" />
		</mapper>

		<mapper
			class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper">
		</mapper>

		<mapper
			class="com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper">
			<param name="match.MSIE" value="ie" />
			<param name="match.Mozilla [" value="ns" />
			<param name="match.Opera" value="opera" />
			<param name="match.Lynx" value="lynx" />
		</mapper>

		<mapper
			class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
			<param name="decorator" value="printable" />
			<param name="parameter.name" value="printable" />
			<param name="parameter.value" value="true" />
		</mapper>

		<mapper
			class="com.opensymphony.module.sitemesh.mapper.RobotDecoratorMapper">
			<param name="decorator" value="robot" />
		</mapper>

		<mapper
			class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper">
			<param name="decorator.parameter" value="decorator" />
			<param name="parameter.name" value="confirm" />
			<param name="parameter.value" value="true" />
		</mapper>

		<mapper
			class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper">
		</mapper>

		<mapper
			class="org.apache.struts2.sitemesh.NoneDecoratorMapper">
		</mapper>

		<mapper
			class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
			<param name="config" value="${decorators-file}" />
		</mapper>

	</decorator-mappers>

</sitemesh>

 

 

5)在 WEB-INF目录下面创建文件:decorators.xml。内容如下:

 

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

<decorators defaultdir="/WEB-INF/decorators">
	<!-- Any urls that are excluded will never be decorated by Sitemesh -->
	<excludes>
		<pattern>/js/*</pattern>
		<pattern>/css/*</pattern>
		<pattern>/images/*</pattern>
	</excludes>

	<decorator name="main" page="/module/common/decorator/main.dec">
		<pattern>/*</pattern>
	</decorator>
</decorators>

 

注:page="/module/common/decorator/main.dec" 这个的值。其意是:在WEB-INF目录有 "/module/common/decorator 目录,并在其目录下有main.dec的文件。

6)main.dec 文件的内容是:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
	<head>
	    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>FTL模板示例 - ${title}</title>
		<style type="text/css">
		<!--
		body {
			margin-left: 5px;
			margin-right: 5px;
		}
		-->
		</style>
		<script type="text/javascript" src="${base}/js/lib/jquery/jquery-1.4.2.js"></script>
		<script type="text/javascript" src="${base}/js/lib/jquery/jquery.validate.js"></script>
		<script type="text/javascript" src="${base}/js/lib/jquery/jquery.form.js"></script>
	    
	    ${head}
	</head>

	<body>
	<link rel="shortcut icon" href="http://localhost/qq.ico"/>
			${body}
	</body>
</html>

 

注:main.dec 是模板定义文件,模板中定义要自动加载的js和css代码。在这里,我定义人的每个ftl页面自动加载jquery的js文件。文件中还有三个自定义参数。这是将目标页面的对应内容加载到模板中显示。

7)自定义一个view.ftl页面,内容如下:

 

<html>
	<head>
		<title>自动跳转到ftl页面</title>
	</head>
	<body>
	这是ftl页面呀~~
	</body>
</html>

 

 

8)能通action跳转到view.ftl页面,解析后的html如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
	<head>
	    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>FTL模板示例 - 自动跳转到ftl页面</title>
		<style type="text/css">
		<!--
		body {
			margin-left: 5px;
			margin-right: 5px;
		}
		-->
		</style>
		<script type="text/javascript" src="/js/lib/jquery/jquery-1.4.2.js"></script>
		<script type="text/javascript" src="/js/lib/jquery/jquery.validate.js"></script>
		<script type="text/javascript" src="/js/lib/jquery/jquery.form.js"></script>
	    
	    
	</head>
 
	<body>
	<link rel="shortcut icon" href="http://localhost/qq.ico"/>
			这是ftl页面呀~~
	</body>
</html>

 

 

9)目标页面在加载解析时,自动加载了模板中定义的js文件。止此配置成功。

分享到:
评论

相关推荐

    mybatis-plus自定义模板.zip

    1、自定义模板 代码:https://blog.csdn.net/xionglangs/article/details/106396515

    模板生成代码

    支持生成DAO,PO,和sql语句的xml文件。

    mybatis+freemake自定义代码生成文件CodeGenerator.zip

    找了很久的东西,mybatis+freemake自定义生成代码器,原来的代码生成器只能生成mapper,service,model感觉没多大用,自定义模板真的节约的好多时间

    扩展MyBatisPlus代码生成器实现自定义源码生成,可生成前端页面、vo对象、dto对象等代码

    MyBatisPlus自带了一个代码生成器mybatis-plus-generator,可基于数据库库表,结合模板技术,自动生成程序源码,不过默认情况下,只支持Entity...需要自定义类,继承于官方,重写outputCustomFile方法,实现上述目的。

    SpringBoot Velocity 代码生成模板

    Spring Boot项目 自动生成数据表模板,包括:Mapper、Mapper.xml、Service、Controller、html 自定义模板生成

    freemarker语法完整版

    假设mylib.ftl 里定义了宏copyright 那么我们在其他模板页面里可以这样使用 Freemarker代码 &lt;#import "/libs/mylib.ftl" as my&gt; &lt;@my.copyright date="1999-2002"/&gt; 在freemarker里被称作namespace --&gt;...

    mybatis自动生成工具

    每个模板有gg变量可以控制自身的自定义配置 (每一个模板都会创建新的gg实例) 如是否生成,是否覆盖目标文件,甚至是生成其它文件 ${gg.setIgnoreOutput(true)}: 如果为true则不生成输出文件 ${gg.generateFile...

    基于Java的低代码生成器Maku-Generator设计源码

    本源码为基于Java的低代码生成器Maku-Generator设计,共包含198个文件,...该项目是一款低代码生成器,可根据自定义模板内容快速生成代码,实现项目的快速开发和上线,减少重复代码编写,开发人员只需专注于业务逻辑。

    freemarker总结

    使用FTL(freeMarker模板语言)编写 组成部分 一、整体结构 1、注释:注释内容--&gt;,不会输出。 2、文本:直接输出。 3、interpolation:由 ${var} 或 #{var} 限定,由计算值代替输出。 4、FTL标记 二....

    JAVA代码生成工具

    每个模板有gg变量可以控制自身的自定义配置 (每一个模板都会创建新的gg实例) 如是否生成,是否覆盖目标文件,甚至是生成其它文件 ${gg.setIgnoreOutput(true)}: 如果为true则不生成输出文件 ${gg.generateFile...

    全能代码生成器,自动生成前后端代码、生成项目框架、生成JavaBean、生成数据库文档、自动部署(TableGo v8.0.0)

    4、新增自定义模板:dbMarkdown[md].ftl和ApiMarkdown[md].ftl,用于生成MD格式的数据库文档和API文档 5、新增33款FlatLaf皮肤主题,JDK8、JDK11、JDK17、JDK18测试通过 6、新增表后缀参数配置,生成驼峰命名时将不...

    Nodejs高扩展性的模板引擎 functmpl简介

    如果想在一个模板中插入另一个模板,可以使用&lt;#包含/&gt; 比如插入模板 a.ftl : &lt;#a.ftl/&gt; &lt;@功能/&gt; 除了输出变量、包含模板外,也可以加入更多自定义的功能,比如:枚举、赋值 但额外的功能需要自定义。 自定...

    好用的代码生成源码

    举例: 如你有一个模板 SqlMap.xml.ftl 将变为 SqlMap.xml 所以你要生成ftl扩展名的文件,应该将文件名从 list.ftl =&gt; list.ftl.ftl 5.模板自动include同级目录:macro.include文件 示例: 如你的模板为 java_src/...

    freemarker + xml模板动态生成word 文档 源码

    Freemarker动态生成word,包含文字替换,freemarker嵌入自定义java函数,动态生成表格列,插入图片的示例,同时使用spire将wordxml格式转换成word文档(doc格式),还包含文件下载示例

    mybatis-plus-generator.rar

    #MyBatis-Plus-Generator ...4. TemplateEnum:模板枚举类,可根据需要选择velocity(*.vm)或者freemarker(*.ftl)模板进行生成 注:大部分配置都已进行注释说明,若需更多自定义配置,请参考官方文档或者源代码。

    Framemarker框架导出数据库设计world文档代码

    Framemarker框架导出world文档代码,使用springboot框架搭建项目环境,添加framemarker的maven引用,编写 **.ftl模板文档,执行自定义main函数,实现数据库设计文档导出world功能。

    word源码java-teclan-office:技术办公室

    使用方法参考 src/test/java/com/teclan/office/word/WordFactory.workProveTest() 常见问题 输出带表格的word以上转换可能存在异常,详情请参考 或documnets/freemarker导出带表格Word文档异常处理.xps 针对以上...

    keycloak-custom-required-action:一个模板,该模板实现了keycloak所需的操作SPI,并为您提供了单个领域的第二个ToS

    自定义条款和条件 这是一个keycloak插件,它实现了keycloak必需的操作SPI。 此插件使您可以执行第二个条款和条件(ToS)必需的操作。 有时,同一领域中的用户类型不同,因此需要提供不同的ToS。 用法 为了使用此插件...

    Struts2整合SiteMesh技巧

    Struts 2.0提供一个Sitemesh插件,允许在Sitemesh模板中使用Struts标记。 要使用Sitemesh需要包含Freemark,Sitemesh和Sitemesh插件库文件。 配置过滤器 如果需要使用Freemark模板文件作为装饰器文件,需要在web....

    Struts2属性文件详解

    该属性还允许使用ftl、vm或jsp,分别对应FreeMarker、Velocity和JSP模板. struts.configuration.xml.reload 该属性设置当struts.xml文件改变后,系统是否自动重新加载该文件.该属性的默认值是false. struts.velocity....

Global site tag (gtag.js) - Google Analytics