文档章节

ofbiz中关于widget使用

保罗的寓言
 保罗的寓言
发布于 2014/08/13 00:25
字数 752
阅读 47
收藏 0

http://api.taobao.com/apidoc/api.htm?spm=a219a.7386789.0.0.rELsZJ&path=cid:10238-apiId:23161

ofbiz中的Widget小窗口和Decorator装修器是ofbizView层的技术,是ofbiz的一大特色。使用widget我们可以将很多零散的页面部分拼合成一张页面。这样的话每张页面都有的公共部分我们就只用创建一次,创建新页面时我们只用创建不同的部分即刻可。

   Widget是用xml文件表示的,存放的位置是app\widget\XxxxScreen.xml,零散的页面碎片通常存放在app\webapp \app\下和app\webapp\app\includes\下,app\webapp\app\存放的是不同的页面部分,app\webapp \app\includes\下存放的是相同的页面部分。

   Widget示例代码:

<screen name="news">
      <section>
           <widgets>
               <platform-specific><html><html-template location="component://hello2/webapp/hello2/includes/header.ftl"/></html></platform-specific>
               <platform-specific><html><html-template location="component://hello2/webapp/hello2/news.ftl"/></html></platform-specific>
               <platform-specific><html><html-template location="component://hello2/webapp/hello2/includes/footer.ftl"/></html></platform-specific>
           </widgets>
      </section>
</screen>

   代码中我们可以看到news页面由三部分组成:header.ftl,main.ftl,footer.ftl。这三部分的路径都在代码中明确给出,这样 的话当用户请求页面news时,ofbiz就会根据代码中给出的路径找到页面的不同部分,将它们组合起来再返回一张完整的页面的用户。

 

   然而,当View比较复杂,页面太多时,这样在XML里定义每一张页面时,XML的代码量也是非常大的,而且不利于维护,别急,Decorator装修器 可以帮我们解决这个问题!Decorator是一个页面模板,该模板也是一个screen元素,模板名通常叫CommonDecorator,和 widget定义在相同的XML文件中。当模板定义后每一个页面的定义就不用像上面这样将所有的部分都列出来了,可以只用列出和其它页面不同的部分。

   示例代码:

<screen name="CommonDecorator">
      <section>
           <widgets>
               <platform-specific><html><html-template location="component://hello2/webapp/hello2/includes/header.ftl"/></html></platform-specific>
               <decorator-section-include name="body"/>
               <platform-specific><html><html-template location="component://hello2/webapp/hello2/includes/footer.ftl"/></html></platform-specific>
           </widgets>
      </section>
</screen>
  

 

<screen name="news">
      <section>
           <widgets>
               <decorator-screen name="CommonDecorator">
                   <decorator-section name="body">
                     <platform-specific><html><html-template location="component://hello2/webapp/hello2/news.ftl"/></html></platform-specific>
                    </decorator-section>
               </decorator-screen>
           </widgets>
      </section>
</screen>

   代码中,页面news的代码就要比一开始少了很多,原因就是使用了模板CommonDecorator。模板页面和普通页面是一样的XML元素,但在其中有一句话不同:<decorator-section-include name="body"/>,该句话所在的位置就是使用了该模板的页面需要添加自己内容的位置,在示例代码中,模板定义了HTML头和脚,使用该模板需要添加的部分就是主体部分。模板中可以添加内容的位置用<decorator-section-include name="body"/>标示,应该可以有多个位置可以被添加,不同的位置用name参数区分。

 

  注意使用了模板的news页面的格式,<widgets>标签内部套一个<decorator-screen name="CommonDecorator">标签,说明要使用的模板是CommonDecorator,然后在其内再套一个 <decorator-section name="body">标签,说


本文转载自:http://blog.sina.com.cn/s/blog_4a4820f9010008ig.html

保罗的寓言
粉丝 25
博文 70
码字总数 40506
作品 0
杨浦
高级程序员
私信 提问
ofbiz安装指南 (hsql/mysql/oracle+tomcat/apache)

一、ofbiz 用自身数据库安装 1. 由 binary 安装: 由 binary 安装非常简单, 以下是安装方法: 下载ofbiz-2.0-beta1-complete.tar.gz, 注意不是ofbiz-2.0-beta1.tar.gz. tar xvzf ofbiz-2.0.be...

大猪
2010/03/27
3.3K
0
Opentaps 客户关系管理与销售自动化 一. 概述

一. 概述 (一) 构架 CRM/SFA应用在很多基础方式上不同于其他OFBiz的应用。OFBiz应用其设计的思想是构架一系列通用的应用,并且通过客户化后能适合绝大多数的业务流程类型,而CRM/SFA的设计思...

Jason
2012/04/09
1K
2
入门学习 安装Ofbiz 12 (mac os x)

本人系统环境 os x 10.9 、jdk1.6、mysql5.5 1、在官方网站上下载ofbiz 版本12.02 下载地址 http://www.apache.org/dyn/closer.cgi/ofbiz/apache-ofbiz-12.04.02.zip 2、对下载文件进行解压 ...

leon_rock
2014/02/25
1K
1
OFBiz 模块化结构分析

模块化的描述组 件:component component是什么:component包含2大类,完整的APP应用,如accounting、product、marketing,以及某个 功能模块及基础服务,如entity、security、service。每个...

红薯
2010/04/15
3.6K
0
Ofbiz 入门教程

1.Ofbiz 介绍: Ofbiz(http://www.ofbiz.org) 是 Open Source 的商务软件系统,充分利用了各优秀的的Open Source 项目, 像 Tomcat, Ant, BeanShell, Jboss 等,构建了一个强大的系统平台,O...

红薯
2010/04/15
21.3K
8

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 他只能用这个办法劝你注意身体了

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @-冰冰棒- :#今日歌曲推荐# Kodaline《High Hopes》 《High Hopes》- Kodaline 手机党少年们想听歌,请使劲儿戳(这里) @xiaoshiyue :仙女...

小小编辑
8分钟前
346
6
Spring Boot Actuator 整合 Prometheus

简介 Spring Boot 自带监控功能 Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean加载情况、环境变量、日志信息、线程信息等。这一节结合 Prometheus 、Grafana 来更加直观...

程序员果果
17分钟前
3
0
Linux文件查找命令详解

对于文件查找,我们最好用的还是属于find命令了,在说find命令之前,先把另外几个查找命令介绍一下。 目录 0x01 查询命令介绍 0x02 find命令介绍 0x01 查询命令介绍 在介绍之前,首先先了解一...

无心的梦呓
18分钟前
3
0
快速掌握的测试用例优先级划分方法

怎么样的设计才能算测试用例 引自:IEEE Standard 610 (1990): A set of test inputs, execution conditions, and expected results developed for a particular objective, such as to exe......

测者陈磊
21分钟前
3
0
[mycat]Attribute value "roadNodeId,version" of type NMTOKEN must be a name token

不能逗号配两个字段的主键 primaryKey="roadNodeId,version" Caused by: io.mycat.config.util.ConfigException: org.xml.sax.SAXParseException; lineNumber: 7; columnNumber: 105; Attrib......

Danni3
27分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部