`

ofbiz的form是如何生成的

 
阅读更多
Ofbiz支持多种表示层的生成方案。可以是HTML,FTL ,JSP、screen widgets等等,甚至可以让开发者根据需要进行扩展。至于如何扩展,我们今天在此不作讨论,以后合适的时候我会给打家分享。在现有的表示层开发方式中,最能展示OFBIZ风格和特点的当为widgets了。基于widgets进行表示展的开发,高效,扩展性好,模块化结构明朗,开发效率也最高,这也是ofbiz首先的开发方式。但是ofbiz中基于widgets的开发,与我们常见的开发方式有很大的不同(至少对于新手页言是这样的确),这也就加大了入门的难度。今天我就来给大家讲讲widgets,和大家分享它的实现原理,以及我们怎样才能有效的用好它。
   我们先来说说从xml的配置到最后html转换的大至过程。我们知道在基于widget进行界面开发时,我们总要在一个xml文件中定义screen,并且screen还可以进行嵌套,可以在screen中加入逻辑、引用form,菜单、或ftl文件等。那么最后它们是怎样有序的组成一张html页面,直至最后呈现在用户的面见的呢?当请求进入服务器以后,根据请求路径的定义(control.xml文件中定义的),可以的到相应的screen定义。Ofbiz加载并解析xml。解析后得到一个又一个的页面元素对象,ofbiz会解析这些对象,成生一个又一个的ftl宏语句。由freemarker编译即可得出我们需要的html.原理非常之简单。
举个例子来说吧,比如我们在screen中引用了catalog的FindCategory这个form。(<include-form name="FindCategory" location="component://product/widget/catalog/CategoryForms.xml"/>
)。通过ofbiz根据xml解析后 就会得如下的freemarker语句:   
  <@renderScreenBegin />
<@renderFormOpen  linkUrl="/catalog/dyn/FindCategory" formType="single" targetWindow="" containerId="FindCategory" containerStyle="" autocomplete="" name="FindCategory" viewIndexField="viewIndex_0" viewSizeField="viewSize_0" viewIndex="0" viewSize="20" useRowSubmit=false />
<@renderHiddenField  name="noConditionFind" value="Y" id="FindCategory_noConditionFind" event="" action="" />
<@renderFormatSingleWrapperOpen  formName="FindCategory" style="basic-table" />
<@renderFormatFieldRowOpen />
<@renderFormatFieldRowTitleCellOpen  style="" />
<@renderFormatFieldRowTitleCellClose />
<@renderFormatFieldRowWidgetCellOpen  positionSpan=0 style="" /><@renderTextFindField  name="productCategoryId" value="" defaultOption="contains" opEquals="等于" opBeginsWith="开头字符" opContains="包含" opIsEmpty="为空" opNotEqual="不等于" className="" alert="false" size="25" maxlength="" autocomplete="" titleStyle="" hideIgnoreCase=false ignCase=true ignoreCase="忽略大小写" />
<@renderTooltip tooltip="" tooltipStyle="" />
<@renderFormatFieldRowWidgetCellClose />
<@renderFormatFieldRowClose />
<@renderFormatFieldRowOpen />
<@renderFormatFieldRowTitleCellOpen  style="" />
<@renderFormatFieldRowTitleCellClose />
<@renderFormatFieldRowWidgetCellOpen  positionSpan=0 style="" />
<@renderTextFindField  name="categoryName" value="" defaultOption="contains" opEquals="等于" opBeginsWith="开头字符" opContains="包含" opIsEmpty="为空" opNotEqual="不等于" className="" alert="false" size="25" maxlength="" autocomplete="" titleStyle="" hideIgnoreCase=false ignCase=true ignoreCase="忽略大小写" />
<@renderTooltip tooltip="" tooltipStyle="" /><@renderFormatFieldRowWidgetCellClose />
<@renderFormatFieldRowClose />
<@renderFormatFieldRowOpen />
<@renderFormatFieldRowTitleCellOpen  style="" />
<@renderFormatEmptySpace />
<@renderFormatFieldRowTitleCellClose />
<@renderFormatFieldRowWidgetCellOpen  positionSpan=1 style="" />
<@renderSubmitField buttonType="button" className="smallSubmit" alert="false" formName="FindCategory" title="" name="submitButton" event="" action="" imgSrc="" containerId="" confirmation ="" ajaxUrl="" />
<@renderTooltip tooltip="" tooltipStyle="" />
<@renderFormatFieldRowWidgetCellClose />
<@renderFormatFieldRowClose />
<@renderFormatSingleWrapperClose formName="FindCategory"/>
<@renderFormClose  focusFieldName="" formName="FindCategory" containerId="FindCategory" hasRequiredField="" />
<@renderScreenEnd />

我想信,如果我们直接把以上这些语句写在一个ftl的文件中,那么大家一看都就明白了,现在ofbiz所作的工作,只是通过根据xml来运态的生成这些语句而已。

有了以上这些freemarker宏的调用语句还是不购的。还需要定义这些宏,这些宏是freemarker的语法要求的。在ofbiz的framwork目录下的widget组件下widget\templates中定义了很多种类形的宏模板,这些模板又通过widget.properties进行了配置。至此我们知道,如果我们想在改变最后from的展示,我们可以通过修改这些宏模板,即可以实现。另外,因为模板是通过widget.properties配置的,我们基于可以开发自己的模板,然后通过修改widget.properties中的配置,我们即可以方便的实现替换了。
  除此之外,在widget\templates下定义了多种类型的模板,可以有生成html的,pdf的,xml的。也就是说,我们可以让ofbiz生成我们想要的任何表达方式。需要说明的是除了html 之外,ofbiz的基它模板,现在还不成熟。在使用的过程中很可能会遇到不少错误,不过只要你愿意去调一下代码,相信很快可以解决的。
分享到:
评论

相关推荐

    Ofbiz 数据库全模型

    Ofbiz,全称为The Open For Business Project,是一个开源的企业应用框架,主要由Apache软件基金会维护。这个项目旨在提供一套全面的、可扩展的企业级应用程序解决方案,涵盖了电子商务、供应链管理、客户关系管理等...

    ofbiz学习笔记(自学整理)

    Apache Ofbiz是一个开源的企业应用框架,它为构建复杂的业务应用程序提供了全面的功能,包括供应链管理、电子商务、财务会计、人力资源等。对于初学者来说,理解Ofbiz的基本架构和工作原理是至关重要的。 Ofbiz的...

    ofbiz10.04表结构

    标题中的"ofbiz10.04表结构"指的是OFBiz 10.04版本的数据模型设计,这是企业级开源应用框架OFBiz的一个重要组成部分。OFBiz全称为Open For Business Project,它是一个用于构建企业应用程序的全面业务解决方案,涵盖...

    ofbiz安装与配置

    Ofbiz 安装与配置指南 Ofbiz 是一个基于 Java 的开源企业级电子商务平台,提供了强大的电子商务解决方案。为了帮助初学者快速上手 Ofbiz,我们将详细介绍 Ofbiz 的安装与配置过程。 环境搭建 在开始安装 Ofbiz ...

    ofbiz开发手册

    OFBiz 开发手册 OFBiz 是一个基于 Java 的开源电商平台,旨在提供一个灵活、可扩展、可配置的电商解决方案。本文档将作为一个 OFBiz 的入门教材,主要介绍 OFBiz 的环境搭建、安装以及用一个简单的应用作为例子介绍...

    ofbiz开发入门总结

    4. 部署Ofbiz:将生成的WAR文件部署到你的Web服务器上,例如将`ofbiz.war`复制到Tomcat的webapps目录下,然后启动服务器。 5. 运行Ofbiz:在浏览器中输入`http://localhost:8080/ofbiz`,如果一切顺利,你应该能...

    ofbiz api开发文档

    《OFBiz API 开发文档详解》 在信息技术领域,OFBiz(Open For Business Project)是一个开源的企业级应用框架,主要用于构建复杂的电子商务系统。OFBiz 提供了一整套全面的业务组件,涵盖了从供应链管理到客户关系...

    Apache.OFBiz.Development

    根据给定的文件信息,以下是关于Apache OFBiz开发的知识点: 1. OFBiz介绍与安装:OFBiz是一个开源的企业自动化软件套件,它提供了构建企业应用程序所需的各种功能,比如电子商务、订单处理等。文件中提到了2008年...

    关于OFBIZ的资料

    在提供的OFBIZ_Demo压缩包中,用户可以找到OfBiz的演示版本,这是一套预配置的环境,展示了OfBiz在实际业务场景下的功能和操作。这个演示通常包括以下部分: 1. **安装与配置**:压缩包可能包含了安装指南和配置...

    Apache OFBiz Cookbook

    ### Apache OFBiz Cookbook 知识点解析 #### 一、Apache OFBiz 概述 - **定义**:Apache OFBiz(Open For Business)是一款开源的企业级应用框架,它集成了ERP(企业资源规划)、CRM(客户关系管理)以及E-...

    OFBIZ开发指南 英文2

    《OFBIZ开发指南》是一本专为开发者设计的详细教程,主要针对OFBIZ(Open For Business Project)这一开源企业应用平台。OFBIZ是一个基于Java的企业级应用框架,旨在提供一系列完整的业务功能,包括供应链管理、电子...

    ofbiz git 服务搭建

    【OFBiz Git 服务搭建详解】 OFBiz是一个开源的企业级应用框架,主要用于构建和管理电子商务系统。本教程将详细介绍如何在本地环境中搭建OFBiz项目,并使用Git进行版本控制。 首先,确保你拥有以下基础环境: 1. ...

    ofbiz开发者入门教程

    在本教程中,我们将深入探讨如何入门Apache Ofbiz的开发,这是一个开源的企业级应用框架,专为电子商务、供应链管理和企业资源规划等业务流程设计。Ofbiz提供了强大的组件化架构,使得开发者可以方便地构建和扩展...

    原创 Ofbiz 入门教程

    Ofbiz会根据这些定义自动生成对应的数据库表,并动态地生成相应的Java对象,用于应用程序中的数据处理。这样一来,开发人员只需关注业务逻辑的实现,Ofbiz会自动处理所有与数据库交互的细节。 #### 二、Ofbiz 的...

    ofbiz资料大全

    里面是下载地址,如果逆向开发ofbiz,只要下载它就绝对没错了 Apache+OFBiz+开发初学者指南.rar OFBiz开发快速入门.rar OFBiz-技术文档.rar OFBiz API中文版.rar Apache OFBiz Cookbook Sep 2010.rar Opentaps ...

    OFBiz经典入门教程加速度编写

    《OFBiz经典入门教程加速度编写》是一篇针对开源企业应用框架OFBiz的入门教程,旨在帮助初学者快速掌握OFBiz的基本使用和开发技巧。OFBiz(Open For Business Project)是一个全面的企业级业务应用程序框架,它由...

    朗华opencms ofbiz 结合包

    5. **定制化开发**:为了适应具体企业的业务需求,可能进行了针对特定场景的定制开发,比如特定报表的生成、特定业务流程的自动化等。 6. **数据同步**:OpenCMS可能被配置为定期或实时从OFBiz获取数据,如产品信息...

    ofbiz数据结构设计

    《OFBiz数据结构设计详解》 OFBiz,全称为Open For Business Project,是一个开源的企业级应用框架,主要用于构建和管理电子商务、供应链管理、客户关系管理等业务系统。OFBiz的数据结构设计是其核心组成部分,它...

    OFBIZ快速入门OFBIZ快速入门

    【OFBIZ快速入门】 OFBiz,全称Open For Business Project,是一个开源的企业级应用框架,专注于电子商务和业务流程管理。OFBiz旨在提供一个全面、可扩展且灵活的解决方案,适用于各种规模的企业。本篇文章将带你...

    Ofbiz快速开发入门详解

    而组件则将相关的实体和服务打包,形成了可重用的模块。 首先,书中会详细介绍如何安装和配置Ofbiz环境,包括下载Ofbiz源码、搭建开发环境、启动服务器等步骤。这部分内容对于初学者来说至关重要,因为一个正确且...

Global site tag (gtag.js) - Google Analytics