扩展hello1 应用 creen-widget, decorator, and actions,练习hello2应用.
1.拷贝hello1 到 hello2 改名 webapp下hello1为 "hello2" 并修改ofbiz-component.xml文件.修改后内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<ofbiz-component name="hello2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/ofbiz-component.xsd">
<resource-loader name="main" type="component"/>
<webapp name="hello2"
title="My First OFBiz Application"
server="default-server"
location="webapp/hello2"
mount-point="/hello2"
app-bar-display="false"/>
</ofbiz-component>
2.创建Screens
在hello2\webapp\hello2目录下创建includes目录,此目可以放页面的公共部分.如页头和页脚等.
页头:headers.ftl 可以定义共用的样式.图片...
页脚:footers.ftl 可以定义页面的版权信息...
在hello2\webapp目录下创建widget目录,在hello2\widget下创建HelloScreens.xml Screens定义xml文件.
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file contains screens for the Team section -->
<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-screen.xsd">
<screen name="main-section-decorator">
<section>
<widgets>
<platform-specific>
<html><html-template location="component://hello2/webapp/hello2/includes/headers.ftl"/></html>
</platform-specific>a
<platform-specific>
<html><html-template location="component://hello2/webapp/hello2/main.ftl"/></html>
</platform-specific>
<platform-specific>
<html><html-template location="component://hello2/webapp/hello2/includes/footers.ftl"/></html>
</platform-specific>
</widgets>
</section>
</screen>
</screens>
3. 修改controller.xml文件修改后的内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<site-conf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/site-conf.xsd">
<description>Second Hello World Site Configuration File</description>
<owner>My Project (c) 2010 </owner>
<errorpage>/error/error.jsp</errorpage>
<handler name="java" type="request" class="org.ofbiz.webapp.event.JavaEventHandler"/>
<handler name="soap" type="request" class="org.ofbiz.webapp.event.SOAPEventHandler"/>
<handler name="service" type="request" class="org.ofbiz.webapp.event.ServiceEventHandler"/>
<handler name="service-multi" type="request" class="org.ofbiz.webapp.event.ServiceMultiEventHandler"/>
<handler name="simple" type="request" class="org.ofbiz.webapp.event.SimpleEventHandler"/>
<handler name="ftl" type="view" class="org.ofbiz.webapp.ftl.FreeMarkerViewHandler"/>
<handler name="jsp" type="view" class="org.ofbiz.webapp.view.JspViewHandler"/>
<handler name="screen" type="view" class="org.ofbiz.widget.screen.ScreenWidgetViewHandler"/>
<handler name="http" type="view" class="org.ofbiz.webapp.view.HttpViewHandler"/>
<preprocessor>
<!-- Events to run on every request before security (chains exempt) -->
<!-- <event type="java" path="org.ofbiz.webapp.event.TestEvent" invoke="test"/> -->
<event type="java" path="org.ofbiz.securityext.login.LoginEvents" invoke="checkExternalLoginKey"/>
</preprocessor>
<postprocessor>
<!-- Events to run on every request after all other processing (chains exempt) -->
<!-- <event type="java" path="org.ofbiz.webapp.event.TestEvent" invoke="test"/> -->
</postprocessor>
<!-- Request Mappings -->
<request-map uri="main">
<response name="success" type="view" value="main"/>a
</request-map>
<!-- end of request mappings -->
<!-- View Mappings -->
<view-map name="error" page="/error/error.jsp"/>
<view-map name="main" type="screen" page="component://hello2/widget/HelloScreens.xml#main"/>
<!-- end of view mappings -->
</site-conf>
4.打开浏览器,访问http://localhost:8080/hello2/control/main,可以看到新的应用页面.
5.Decorating Your Page装饰页面.
例如:想创建内处相同页头和页脚的页面,screen-widget 允许我们创建多个页面重用同一显示元素.
首先:在controller.xml文件中定义多个requests 和 views
如:
<!-- Request Mappings -->
<request-map uri="main">
<response name="success" type="view" value="main"/>a
</request-map>
<request-map uri="news">
<response name="success" type="view" value="news"/>a
</request-map>
<!-- end of request mappings -->
<!-- View Mappings -->
<view-map name="error" page="/error/error.jsp"/>
<view-map name="main" type="screen" page="component://hello2/widget/HelloScreens.xml#main"/>
<view-map name="news" type="screen" page="component://hello2/widget/HelloScreens.xml#news"/>
<!-- end of view mappings -->
其次:在screen-widget XML 文件中添加新的面页和屏幕.
<@ofbizUrl>标记在headers.ftl 文件中.生成url.
headers.ftl文件如下:
<s>页面头...</s>
<a href="<@ofbizUrl>/main</@ofbizUrl>">首页</a>
<a href="<@ofbizUrl>/news</@ofbizUrl>">新闻</a>
<hr>
news.ftl文件内容如下:
<html>
<head>
<title>Hello World - news</title>
</head>
<body>
<h1>news</h1>
<p>news page start ...............!</p>
</body>
</html>
HelloScreens.xml 文件修改如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file contains screens for the Team section -->
<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-screen.xsd">
<screen name="commonDecorator">
<section>
<widgets>
<platform-specific>
<html><html-template location="component://hello2/webapp/hello2/includes/headers.ftl"/></html>
</platform-specific>a
<decorator-section-include name="body"/>
<platform-specific>
<html><html-template location="component://hello2/webapp/hello2/includes/footers.ftl"/></html>
</platform-specific>
</widgets>
</section>
</screen>
<screen name="main">
<section>
<widgets>
<decorator-screen name="commonDecorator">
<decorator-section name="body">
<platform-specific>
<html><html-template location="component://hello2/webapp/hello2/main.ftl"/></html>
</platform-specific>
</decorator-section>
</decorator-screen>
</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>
</screens>
6.Adding Actions 添加Actions
现在是基于静态站点的页面.下一步是要混合动态内容.
在你的WEB-INF目录下创建actions目录.可以加入一些如beanshell script 等脚本. 略..
参照:http://www.opensourcestrategies.com/ofbiz/hello_world2.php学习