`
zwt2001267
  • 浏览: 444791 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Freemarker自定义函数的使用

 
阅读更多

1. 编写函数

 

 

 

public class FtlCheckPermissionMethod implements TemplateMethodModel {

	@SuppressWarnings("rawtypes")
	@Override
	public Object exec(List args) throws TemplateModelException {
		String permissionsStr = args.get(0).toString();
		String permission = args.get(1).toString();
		String[] permissionsArray = permissionsStr.split(SessionUtil.PERMISSION_SPLIT);
		for (String per : permissionsArray) {
			if (permission.equals(per)) {
				return true;
			}
		}

		return false;
	}
}

 

 

2.注册与使用

   有两种方式:

  (1).在模板文件中注册,在模板中使用

 

 

<#assign checkPermission= "com.beyondsoft.common.util.FtlCheckPermissionMethod"?new()>
<#macro leftMenu menu>
	<div class="left_block clearfix">
	  <div class="leftmenu">
		<ul>
			<#if checkPermission(permissions,"VW_ACCOUNT")>
				<li <#if menu == "Account_Management">class="on"</#if>><a href="javascript:windowLocationHref('${base}/account/initAddNewAccount.do');">Account Management</a></li>
			</#if>
			<#if checkPermission(permissions,"VW_ROLE_MANAGEMENT")>
				<li <#if menu == "Role_Management">class="on"</#if>><a href="javascript:windowLocationHref('${base}/role/initRoleManagement.do');">Role Management</a></li>
			</#if>
			<#if checkPermission(permissions,"VW_RESET_PASSWORD")>
				<li <#if menu == "Reset_Password">class="on"</#if>><a href="javascript:windowLocationHref('${base}/reset/initReset.do');">Reset Password</a></li>
			</#if>
			<#if checkPermission(permissions,"VW_REVIEW_HISTORY")>
				<li <#if menu == "Review_History">class="on"</#if>><a href="javascript:windowLocationHref('${base}/review/review.do');">Review History</a></li>
			</#if>
		</ul>
	  </div>
	  <span></span>
	</div>
</#macro>

 

 

 (2).处理模板文件时注册
    关键代码:

Map<String,Object> root=new HashMap<String, Object>();          
root.put("getSysdate", new StringLengthMethod());
Configuration config=new Configuration();                         
File file=new File(templatePath); //并加载模板文件              
config.setDirectoryForTemplateLoading(file);  //设置包装器,并将对象包装为数据模型              
config.setObjectWrapper(new DefaultObjectWrapper()); //获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致              
Template template=config.getTemplate(templateName,templateEncoding); //合并数据模型与模板                            
template.process(root, out);

 

分享到:
评论

相关推荐

    freemarker 自定义freeMarker标签

    此外,FreeMarker还支持自定义函数,它们类似于JavaScript中的函数,可以接收参数并返回值。创建自定义函数的方式与自定义指令类似,只是需要实现`TemplateMethodModelEx`接口。 为了调试和优化自定义标签,了解...

    FreeMarker内置函数

    除了内置函数,FreeMarker还支持通过`&lt;#function&gt;`标签创建自定义函数,以便扩展其功能。 了解并熟练使用这些内置函数,能够显著提升在FreeMarker模板中的开发效率,使模板代码更加简洁和高效。在实际应用中,可以...

    freemarker自定义分页标签宏

    在这个主题“freemarker自定义分页标签宏”中,我们将深入探讨如何在FreeMarker中创建自定义的分页标签宏,以便更有效地管理和展示大量数据。 首先,分页是一种常见的网页设计技术,用于将大量数据分割成小块,使...

    Struts2、Spring、Freemarker自定义标签

    Freemarker支持条件判断、循环结构、内置函数,以及自定义标签,增强了模板的灵活性。与JSP相比,Freemarker通常被认为更简洁、易读且更易于维护。 将这三个框架结合使用,可以构建出高效、灵活的Java Web应用。...

    javascript 自定义eval函数实现

    在本讨论中,我们将深入探讨如何自定义`eval()`函数以提高代码的安全性和效率,同时也会涉及到JavaScript的动态执行特性以及其在实际开发中的应用。 首先,`eval()`的默认行为是将其接收到的字符串当作JavaScript...

    freemarker内置函数

    除了内置函数,还可以通过`&lt;#function&gt;`定义自定义函数,或者使用`&lt;@myMacro&gt;`调用已定义的宏。 通过以上内容,你应该对Freemarker的内置函数有了基本的认识。实践是最好的老师,尝试在自己的项目中应用这些函数,...

    freemarker-2.3.23jar

    4. **函数和方法**:Freemarker支持自定义函数和方法,可以使用内置的函数库,如字符串操作、数学计算等,也可以扩展自定义函数来满足特定需求。 5. **模板继承和导入**:通过`&lt;#import&gt;`和`&lt;#extends&gt;`,模板可以...

    Freemarker2.3.16_带简单教程

    4. **高级特性**:如模板继承(template inheritance)、模板元数据(metainfo)、自定义函数库(freemarker functions)等。 《freemarker-2.3.16》可能是Freemarker 2.3.16的源码或二进制库,对于开发者来说,...

    freemarker 教程 使用手册

    1. 自定义指令:可以扩展Freemarker,创建自定义指令以满足特定需求。 2. 缓存机制:Freemarker支持缓存模板,提高性能。 3. 国际化支持:通过`#localize`和`#fmt`指令处理多语言内容。 4. 静态文本和HTML转义:`...

    freemarker Demo 适用于freemarker初学

    同时,还可以自定义函数和宏来扩展功能。 10. **模板调试** Freemarker提供了一个调试模式,可以帮助开发者找出模板中的错误,比如未定义的变量、语法错误等。 这个"freemarker Demo"项目应该包含了基本的模板...

    freemarker.jar下载

    Freemarker支持自定义函数,通过`&lt;#function&gt;`定义。同时,它能够与Java的自定义标签库(如JSTL)配合,提供更丰富的功能,如国际化、日期时间处理等。 7. 安全特性 Freemarker提供了安全模式,可以在不信任用户...

    freemarker&velocity的使用

    4. **函数和宏**:Freemarker提供了内置函数,如`htmlEscape`用于转义HTML特殊字符,同时用户可以自定义宏来封装重复的模板片段。 5. **模板配置**:可以通过`freemarker.cfg.properties`文件配置模板解析的全局选项...

    freemarker.jar用于jdk1.8下使用

    4. **内置函数和指令**:Freemarker提供了一系列内置函数和指令,如`?html`用于防止XSS攻击,`&lt;#if&gt;`、`&lt;#else&gt;`、`&lt;#foreach&gt;`等用于控制流程。这些功能增强了模板的灵活性和可编程性。 5. **国际化支持**:...

    FreeMarker手册-Freemarker 2.3.18

    FreeMarker支持多种指令,如`&lt;#if&gt;`、`&lt;#else&gt;`、`&lt;#else_if&gt;`用于条件判断,`&lt;#foreach&gt;`、`&lt;#break&gt;`、`&lt;#continue&gt;`用于循环控制,`&lt;#assign&gt;`、`&lt;#global&gt;`进行变量定义,`&lt;#function&gt;`自定义函数等。...

    freemarker及jeecms标签使用学习文档

    - **自定义函数和标签**:通过`TemplateMethodModelEx`接口实现自定义方法,`TemplateDirectiveModel`接口实现自定义标签。 - **模板缓存**:提高性能,减少不必要的模板编译。 3. **Jeecms标签使用** - **...

    freemarker解析成pdf

    Freemarker支持条件语句(`&lt;#if&gt;`、`&lt;#else&gt;`)、循环(`&lt;#foreach&gt;`)以及自定义函数(`&lt;#function&gt;`),使得模板可以处理更复杂的情况。 在实际应用中,我们通常会将这些步骤封装到一个服务类或工具类中,以便在...

    超强freemarker使用总结,有示例有讲解,可做快速查询手册!!

    ### Freemarker 使用总结与详解 #### 一、Freemarker 概述 Freemarker 是一种用于生成动态页面的模板引擎。它不依赖任何 Web 容器,可以在任何 Java 应用程序中使用。Freemarker 的核心优势在于其简单易学且功能...

    如何使用Freemarker生成java代码

    4. **函数调用**:Freemarker支持自定义函数,如 `${user.formatDate(date)}`。 四、实际应用示例 假设我们有一个用户类`User`,包含`id`、`name`和`email`属性,我们可以创建一个`user.ftl`模板: ```ftl public...

    freemarker中文文档与包

    例如,`&lt;#if&gt;`用于条件判断,`&lt;#foreach&gt;`用于循环,`&lt;#assign&gt;`用于变量赋值,`&lt;#function&gt;`定义自定义函数。这些元素使得开发者可以在模板中灵活地控制输出内容。 2. **数据模型与变量**: 在Freemarker中,数据...

    freemarker代码

    4. 功能调用:可以使用`&lt;#function&gt;`定义自定义函数,并在模板中调用。 5. 转义:`&lt;@...&gt;`用于调用Freemarker内置的函数或宏,例如`&lt;@include&gt;`用于包含其他模板。 三、Freemarker与Spring MVC集成 在Java Web开发...

Global site tag (gtag.js) - Google Analytics