扩展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学习