`
bo_hai
  • 浏览: 563856 次
  • 性别: 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

    - 在修改模板后,需要运行代码生成器并指定自定义模板的路径,以确保使用到的是自定义模板。 总的来说,自定义Mybatis-Plus模板是一个灵活且强大的特性,它允许开发者根据项目需求定制代码生成规则,提高开发效率,...

    MyBatisPlus代码生成器自定义模板时的模板文件

    - 配置生成器:在配置文件(如generatorConfig.xml)中指定自定义模板的位置,使代码生成器使用新的模板进行生成。 2. **常用模板及作用**: - `Entity.java.ftl`:定义实体类的模板,包括字段、getter/setter...

    online自定义模板的使用

    在线自定义模板的使用在现代企业信息化建设中扮演着重要角色,特别是在JEECG这样的快速开发框架中。本文将深入探讨如何利用模板...在JEECG框架的支持下,这种自定义模板的使用方法为企业信息化建设提供了强大的工具。

    自定义模板自动生成.rar

    本文将详细讲解如何利用MyBatis的代码生成器(Generator)进行自定义模板生成代码,以便提高开发效率并降低出错概率。 首先,我们需要了解MyBatis Generator(MBG)的基本概念。MBG是一个可以生成Java源代码和XML...

    关于eclipse的ftl模板的技巧设置方法

    ### 关于Eclipse中FTL模板的技巧设置方法 #### 概述 FreeMarker Template Language (FTL) 是一种用于生成文本输出的模板语言。它广泛应用于Java Web开发中,帮助开发者快速构建动态网页。然而,对于开发者而言,...

    模板生成代码

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

    带xml、ftl格式化工具的editplus

    在本篇中,我们将深入探讨EditPlus如何与XML和FTL(FreeMarker)文件格式配合使用,并讨论如何配置EditPlus以提升这两种文件类型的编辑体验。 **XML格式化工具** XML(可扩展标记语言)是一种用于存储和传输数据的...

    FTL 编辑器

    使用这样的专业编辑器,开发者可以更专注于FTL模板的设计和XML数据的处理,而不必担心基础的编辑和管理问题。在Java Web开发中,熟练掌握FTL编辑器能大大提高工作效率,确保项目模板的稳定性和可维护性。

    FREEMARK自定义方法

    - **描述**: 提供了关于Freemarker的一些基本介绍,并且提到了如何在Freemarker模板语言(FTL)中调用自定义的方法。 ### 二、Freemarker自定义方法实现原理 Freemarker 是一个基于 Java 的模板引擎,用于生成文本...

    4ftl数值计算和默认value以及value转换1

    若需自定义格式,可以使用 FreeMarker 的 `number` 模板语言指令,如 `${number.format('#.###', myDouble)}`。 4. **空值处理**: 如果变量 `value` 为空,尝试访问它会抛出异常。为了避免这种情况,可以使用条件...

    基于Freemarker模板的代码生成器前台页面模板文件

    在给定的压缩包文件中,我们可以看到几个关键的FTL(FreeMarker Template Language)文件,它们是代码生成器的前台页面模板,包括Browse.ftl、EditPage.ftl、AddPage.ftl和Detail.ftl。 1. **Browse.ftl**:这个...

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

    在`configTemplate()`方法中,我们可以添加自定义的模板路径,以便在代码生成过程中使用。 在配置策略`configStrategy()`时,可以指定实体类名、数据库字段映射规则等,确保生成的代码符合项目规范。同时,通过调整...

    freemark 自定义标签 总结

    通过上述内容,我们了解了Freemarker自定义标签的基本概念、创建与使用方法,以及如何在实际项目中发挥作用。自定义标签极大地增强了Freemarker的灵活性,使得模板语言可以更好地适应各种应用场景。在阅读...

    Java freemarker 模板生成word动态表格

    6. **模板与数据合并**:使用FreeMarker的`Template`类加载模板文件,然后用`process`方法将数据模型应用到模板上,生成最终的Word文档。 7. **POM.xml**:在Maven项目中,`pom.xml`文件是项目的配置文件,用于定义...

    mybatis生成器-模板

    使用MBG自定义模板的步骤大致如下: 1. 创建模板文件:如`JavaModelGenerator.ftl`、`SqlMapGenerator.ftl`和`MapperGenerator.ftl`,分别对应实体类、XML映射文件和Mapper接口的生成。 2. 设计模板内容:根据项目...

    基于java根据模板动态生成PDF文件

    然而,PDFBox并不直接支持模板机制,所以通常需要配合其他工具或自定义逻辑来实现动态生成。 三、 Flying Saucer & Thymeleaf 为了根据模板动态生成PDF,我们可以结合Flying Saucer和Thymeleaf。Flying Saucer是一...

    SpringBoot Velocity 代码生成模板

    项目的灵活性体现在自定义模板上,开发者可以根据项目需求定制模板文件,改变生成的代码结构或内容。例如,可以调整Mapper接口的方法签名,或者改变Controller中的HTTP方法类型。 6. **集成与配置**: 集成...

    html转img图片或ImgBase64(通过ftl模板填充数据转为图片)

    1. **生成HTML模板**: 使用FreeMarker (FTL) 或其他类似的模板引擎,创建一个HTML模板。FTL是一种强大的服务器端模板语言,可以动态地填充数据到预定义的HTML结构中,形成个性化的内容。 2. **数据填充**: 将动态...

    Java发送带模版的邮件示例

    以FreeMarker为例,首先创建一个FTL(FreeMarker模板语言)文件,比如`email.ftl`,包含你设计的邮件模板: ```html &lt;!DOCTYPE html&gt; ${subject} &lt;h1&gt;Hello, ${recipientName}! &lt;p&gt;Your order #${orderId} ...

    自定义mybatis-generator生成jar包

    在`common`这个压缩包文件中,可能包含了MBG自定义模板和其他辅助文件,用于帮助用户快速设置和运行MBG。解压这个包后,开发者可以参考其中的模板和配置文件,根据自己的项目需求进行修改,然后执行MBG生成代码。 ...

Global site tag (gtag.js) - Google Analytics