freemaker TemplateMethodModel使用
在做ofbiz程序时遇到在ftl页面中调用java方法
直接找到http://freemarker.org/docs/pgui_datamodel_method.html上的freemaker的教程
例子: 这是一个简单的方法, 他返回一个第一个字符串在第二个字符串中位置的数值 ,如果没有的话就返回 -1 。
public class IndexOfMethod implements TemplateMethodModel {
public TemplateModel exec(List args) throws TemplateModelException {
if (args.size() != 2) {
throw new TemplateModelException("Wrong arguments");
}
return new SimpleNumber(
((String) args.get(1)).indexOf((String) args.get(0)));
}
}
你可以在这个方法,设置一个名称,放入root:
root.put("indexOf", new IndexOfMethod());
然后,你可以这样调用模板:
<#assign x = "something">
${indexOf("met", x)}
${indexOf("foo", x)}
同时,会输出:
2
-1
在ofbiz的设置如下
framework\webapp\config\frameworkTransforms.properties
设置
indexOf=org.ofbiz.hzy.util.IndexOf
package org.ofbiz.hzy.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.ofbiz.base.util.UtilDateTime;
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.base.util.UtilProperties;
import org.ofbiz.entity.GenericDelegator;
import freemarker.template.TemplateMethodModel;
import freemarker.template.TemplateModelException;
public class IndexOf implements TemplateMethodModel{
public String exec(List args) throws TemplateModelException {
if (args.size() != 2) {
throw new TemplateModelException("Wrong arguments");
}
return ((String) args.get(1)).indexOf((String) args.get(0)));
}
}
然后,你可以在ftl调用:
<#assign x = "something">
${indexOf("met", x)}
${indexOf("foo", x)}
分享到:
相关推荐
3. **模块详解**:Ofbiz包含的产品管理、订单处理、库存控制等模块的使用方法和配置指南,可能都会在文档中一一阐述。 4. **API与服务**:对于开发者而言,了解Ofbiz提供的API和服务至关重要。文档可能会涵盖如何...
【ofbiz综合使用手册】是针对初学者的指导材料,主要介绍了如何配置和使用ofbiz这一企业级开源应用框架。ofbiz遵循了Model-View-Controller(MVC)设计模式,这种模式对于大型商业逻辑项目的开发尤其有益,因为它...
3. 使用 SVN 插件安装 Ofbiz:我们可以使用 SVN 插件从 SVN 仓库中下载 Ofbiz 的源代码。我们可以在 Eclipse 的“Project Explorer”中右键点击,选择“Import”,然后选择“从 SVN 检出项目”,输入 Ofbiz 的 SVN ...
此外,OFBiz使用Servlet API 2.3中的过滤器(Filter)机制,进一步增强控制器的功能。过滤器在请求到达Servlet之前和响应离开Servlet之后进行操作,可以用来预处理请求、后处理响应,提供定制的请求和响应对象,以及...
在OFBiz中,视图可以是传统的JSP页面,也可以使用FreeMarker、JPublish、Beanshell等模板技术来实现。视图不直接与模型交互,而是通过控制器获取和更新数据。 3. **控制器(Controller)**:控制器作为模型和视图...
Ofbiz使用Spring框架作为其依赖注入容器,使得组件和服务之间能够灵活地协作。 自学Ofbiz时,首先需要熟悉其开发环境的搭建。这通常涉及下载源码,配置Java环境,以及安装和设置Ant或Maven构建工具。然后,你需要...
在Ofbiz中,数据库模型扮演着至关重要的角色,它是系统数据结构的基础,定义了所有业务实体及其相互关系。 数据库模型是Ofbiz的核心组成部分,它描述了系统中的各种实体(如产品、订单、客户等)以及它们之间的关系...
同时结合了 ofbiz 在开发过程中所参 考的一些资料,比如《数据模型资源手册(卷1)》,《JAVA 核心模式》等对 ofbiz 的主要的设计思想 进行分析。文档的目的是为 ofbiz 的开发者和运维人员提供一个良好的参考资源。 ...
在Ofbiz的示例代码`CustomerGatherMethodCreate`中,可以看到如何在服务中使用事务。首先,通过`TransactionUtil.begin()`开始一个事务,接着进行数据库操作,如`delegator.storeAll(toBeStore)`。如果所有操作成功...
在OFBiz权限管理系统中,采用了“安全组”(SecurityGroup)的概念来关联“权限”与“用户”。系统中的权限种类繁多,包括但不限于系统预设权限、用户自定义权限、资源权限、操作权限等。这些权限与安全组之间建立多...
在OFBiz 10.04这个特定版本中,表结构的设计和布局对于理解和使用OFBiz系统至关重要。表结构定义了数据库中的各个实体以及它们之间的关系,这些实体包括产品、订单、客户、库存等关键业务元素。理解这些表结构有助于...
11. 扩展和重构OFBiz:包括了将现有的BeanShell脚本转换为Java事件,以及使用了哪种扩展策略来优化OFBiz的开发。 12. 测试与备份:介绍了如何保存测试的快照点,备份Derby数据库文件和Web服务器工作文件,以便快速...
本教程将详细介绍如何在本地环境中搭建OFBiz项目,并使用Git进行版本控制。 首先,确保你拥有以下基础环境: 1. JDK 1.7:Java开发环境,OFBiz需要1.7版本或以上。 2. Eclipse 4.0:一个流行的Java集成开发环境...
- **服务**:描述了OFBiz中的服务接口,如订单处理、库存管理等。 - **组件**:OFBiz由多个组件组成,如产品、订单、客户服务等,每个组件都有一系列的API接口。 - **实体**:OFBiz的实体模型是其数据存储的基础...
- **引用 OFBiz 中的组件**:指导如何在 OFBiz 中正确引用和使用不同组件。 #### 结论 通过上述章节的学习,读者不仅能够掌握 OFBiz 的基本安装和配置过程,还能够了解如何根据业务需求对 OFBiz 进行定制化开发。...
相比Struts,Ofbiz的表示层更加易于理解和使用,因为它减少了直接编写Java控制器的需求。 Ofbiz与Struts的主要区别在于,Struts遵循经典的MVC设计模式,旨在简化Web应用的开发,但它在处理复杂的企业级应用时可能会...