`
jiasudu1649
  • 浏览: 715202 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

扩展你的web app以screen-widget, decorator, and actions

阅读更多
Extending your web app with screen-widget, decorator, and actions
扩展你的web app以screen-widget, decorator, and actions
by Si Chen

现在你做了你 第一个Web应用程序. 在现实的世界,你大概会创建具有许多的应用和执行许多任务的页面。 OFBiz screen-widget允许你创造一起许多web app的片断 (“装饰器模式”)并且进行执行。例如:收集和分析数(“actions.”)


在本指南中,点击所有图象扩大它。

在本指南,我们将延伸 Hello World 1 到第二种应用, hello2。 第一步先复制hello1入hello2和更改“hello1” webapp的名字到“hello2”,并且在他的ofbiz-component.xml作相应的修改 :



Creating Screens创建屏幕

OFBiz screen-widget使用汇集复杂页与显示元件许多更小的片断。 (如果您使用了OFBiz的 更早的版本,它替换JPublish和regions框架。)

第一步将在您的webapp并且创建includes/目录和文件headers、 footers。 如果您想要使用通用的 stylesheet和graphics,这是使用它最好的地方。 您也可以想要从main.ftl去除同一个代码:

The second step is to stitch these pieces together using the screen-widget. Create a widget/ directory inside hello2/, next to webapp/. Inside widget/, create an XML file to define your screens:
第二步使用screen-widget并把他们拼接起来。 在hello2/里面的webapp/旁边创建一个widget/目录。 在widget/里面,创造一个XML文件定义你的页面:
sichen@linux:~/eclipse/workspace/ofbiz/hot-deploy/hello2> ls -l
total 4
-rw-------  1 sichen users 1747 2005-06-09 16:28 ofbiz-component.xml
drwxrwxr-x  3 sichen users   72 2005-06-09 16:07 webapp
drwxr-xr-x  2 sichen users   80 2005-06-09 17:02 widget
sichen@linux:~/eclipse/workspace/ofbiz/hot-deploy/hello2> ls -l widget/
total 4
-rw-r--r--  1 sichen users 720 2005-06-09 17:02 HelloScreens.xml
The simplest screen definition is one which puts together several ftl pages together:
最简单的screen定义是把几个ftl页面汇集到一起:


印刷错误:上面的图片是screen-widget使用更旧的DTD,而不是正确xmlns。 这在下载里面被改正了。


最后一步,是在你的控制器中关联screen的定义而不是直接使用Freemarker模板


现在我们开始,当你键入
http://localhost:8080/hello2/control/main


在你的浏览器中,你将得到这个

通过多个片段装饰页面,screen-widget帮助你可以建立更加复杂的应用程序。

装饰你的页面

装饰器模式允许你使用许多不同的部分来组成页面,也允许你在多个页面中重复利用那些部分。 例如,你能有表头、导航条、新闻区、提议和底部信息等多个片段。

例如,假设您想创建几页内容不同使用同一个header和footer。 screen-widget允许你通过创建多个页面重复利用同一个显示元件。 开始,我们首先在controller.xml创造多个请求和视图:

下一步,我们创建其他的页面和screens。 在screen-widget XML文件中,你能复制每个screen定义和修改main.ftl到你的页面。


在页面的式样,您不必再添加新的元素。

注意 <@ofbizUrl>标签在header.ftl (底部。)这是用于产生您的URL。 这些页面类似这样。

当你构建大一些的站点,然而,重复布局命令是一个维护问题。 幸运地, OFBiz screen-widget允许你定义可以被多个屏幕重复利用的模板。 您通过宣称a做此 在模板屏幕里面(通常称“CommonDecorator”)。 然后,在您的其他屏幕,您参考模板屏幕与a并且宣称他们自己的内容与标记。 这是什么它将看似:

引起的网页看同以前一样。 如果,然而,您在所有页得到了请求投入一个法律声明,它是一样简单的象modifiying CommonDecorator的布局。


增加Actions

现在你可以看到使用OFBiz构建静态站点。 下一步,将添加动态的内容。 一般情况下,大多数web脚本允许你直接在页面内写代码。 Freemarker也允许你这样作,把一个日期放在header里。 但是Freemarker的作者不建议你这样作,因为他们感到它将导致过度复杂的页面。

OFBiz通过分离布局避免这个问题从行动或代码,会集并且准备数据。 由网页的个别行动和介绍,您能允许用不同的技能的分开的人(编程对设计)在网页工作。 您能也重复利用同一个代码为引起多个看法,例如网页或同一个内容的PDF。

要做到这点,你首先要创建一个actions/目录在你的WEB-INF目录里面。 然后你将进入action写beanshell脚本。 这里beanshell脚本是很象Java servlet,只有它被输入并且动态地被解释(而不是被编译。),如果您想要把对象返回显示到Freemarker页面,您可以将他们放入“上下文”的Map。 最后,你会需要展示这个action在你的screen,我这里创建了一个新的:

我在controller.xml里创建一个模型为他。

这里有很多。 在HelloScreens.xml,你创建一个screen使用people.ftl和people.bsh,这是一个数据展示的screen。 people.bsh是一个简单的得到delegator的脚本,查找所有人员,然后把他们放入map。 (OFBiz把delegator放入请求。)最后,在底部, people.ftl显示所有名字。 (这是一个Freemarker句法的好例子。)这些你都将看见。

也有一种直接在screen-wdiget使用<entity-one>方式,而不需要写一些分散的脚本和Java代码。 这点我就讲这些,希望你可以深入了解。

是否因为有delegator对象,你可以直接读写数据库并且把你所有的业务逻辑写在.bsh脚本中?答案是可以,但是不建议这样做,为了更大的应用。 实际上,从来没有这样的OFBiz应用程序。


总结

这是给你关于怎样用OFBiz建立Web应用程序一种基本思想。 有许多工具帮助您,并且我仅仅是介绍它。你可以在现有的OFBiz应用程序基础上做的更多。

其中一个非常有用的工具是form widget,它可以根据你的数据模型的属性自动生成页面和业务逻辑。 看见这wiki page页面以获得更多信息。

Download下载
您能下载本指南代码,并且在hot-deploy目录执行。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics