免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3149 | 回复: 0
打印 上一主题 下一主题

ofbiz 一步一步学习hello word (hello2)进阶 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-22 17:26 |只看该作者 |倒序浏览
扩展hello1 应用 creen-widget, decorator, and actions,练习hello2应用.

1.拷贝hello1 到 hello2 改名 webapp下hello1为 "hello2" 并修改ofbiz-component.xml文件.修改后内容如下:
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?>  
   2. <ofbiz-component name="hello2"  
   3.         xmlnssi="http://www.w3.org/2001/XMLSchema-instance"   
   4.         xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/ofbiz-component.xsd">  
   5.     <resource-loader name="main" type="component"/>  
   6.     <webapp name="hello2"   
   7.             title="My First OFBiz Application"   
   8.             server="default-server"   
   9.             location="webapp/hello2"   
  10.             mount-point="/hello2"  
  11.             app-bar-display="false"/>      
  12. </ofbiz-component>  

<?xml version="1.0" encoding="UTF-8"?>
<ofbiz-component name="hello2"
        xmlnssi="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文件.
内容如下:
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?>  
   2. <!-- This file contains screens for the Team section -->  
   3.   
   4. <screens xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-screen.xsd">  
   5.   
   6.    <screen name="main-section-decorator">  
   7.         <section>  
   8.             <widgets>  
   9.                 <platform-specific>  
  10.                     <html><html-template location="component://hello2/webapp/hello2/includes/headers.ftl"/></html>  
  11.                 </platform-specific>a  
  12.                 <platform-specific>  
  13.                     <html><html-template location="component://hello2/webapp/hello2/main.ftl"/></html>  
  14.                 </platform-specific>  
  15.                 <platform-specific>  
  16.                     <html><html-template location="component://hello2/webapp/hello2/includes/footers.ftl"/></html>  
  17.                 </platform-specific>  
  18.             </widgets>  
  19.         </section>  
  20.     </screen>  
  21.   
  22. </screens>  

<?xml version="1.0" encoding="UTF-8"?>
<!-- This file contains screens for the Team section -->

<screens xmlnssi="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文件修改后的内容如下:
Java代码

   1. <?xml version="1.0" encoding="UTF-8" ?>  
   2.   
   3. <site-conf xmlnssi="http://www.w3.org/2001/XMLSchema-instance"   
   4.         xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/site-conf.xsd">  
   5.     <description>Second Hello World Site Configuration File</description>  
   6.     <owner>My Project (c) 2010 </owner>  
   7.     <errorpage>/error/error.jsp</errorpage>  
   8.   
   9.     <handler name="java" type="request" class="org.ofbiz.webapp.event.JavaEventHandler"/>  
  10.     <handler name="soap" type="request" class="org.ofbiz.webapp.event.SOAPEventHandler"/>  
  11.     <handler name="service" type="request" class="org.ofbiz.webapp.event.ServiceEventHandler"/>  
  12.     <handler name="service-multi" type="request" class="org.ofbiz.webapp.event.ServiceMultiEventHandler"/>  
  13.     <handler name="simple" type="request" class="org.ofbiz.webapp.event.SimpleEventHandler"/>  
  14.   
  15.     <handler name="ftl" type="view" class="org.ofbiz.webapp.ftl.FreeMarkerViewHandler"/>  
  16.     <handler name="jsp" type="view" class="org.ofbiz.webapp.view.JspViewHandler"/>  
  17.     <handler name="screen" type="view" class="org.ofbiz.widget.screen.ScreenWidgetViewHandler"/>  
  18.   
  19.     <handler name="http" type="view" class="org.ofbiz.webapp.view.HttpViewHandler"/>  
  20.   
  21.     <preprocessor>  
  22.         <!-- Events to run on every request before security (chains exempt) -->  
  23.         <!-- <event type="java" path="org.ofbiz.webapp.event.TestEvent" invoke="test"/> -->  
  24.         <event type="java" path="org.ofbiz.securityext.login.LoginEvents" invoke="checkExternalLoginKey"/>  
  25.     </preprocessor>  
  26.     <postprocessor>  
  27.         <!-- Events to run on every request after all other processing (chains exempt) -->  
  28.         <!-- <event type="java" path="org.ofbiz.webapp.event.TestEvent" invoke="test"/> -->  
  29.     </postprocessor>  
  30.   
  31.     <!-- Request Mappings -->  
  32.     <request-map uri="main">  
  33.         <response name="success" type="view" value="main"/>a  
  34.     </request-map>  
  35.   
  36.     <!-- end of request mappings -->  
  37.   
  38.     <!-- View Mappings -->  
  39.     <view-map name="error" page="/error/error.jsp"/>  
  40.     <view-map name="main" type="screen" page="component://hello2/widget/HelloScreens.xml#main"/>  
  41.     <!-- end of view mappings -->  
  42. </site-conf>  

<?xml version="1.0" encoding="UTF-8" ?>

<site-conf xmlnssi="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
    如:
Java代码

   1. <!-- Request Mappings -->  
   2.     <request-map uri="main">  
   3.         <response name="success" type="view" value="main"/>a  
   4.     </request-map>  
   5.      <request-map uri="news">  
   6.         <response name="success" type="view" value="news"/>a  
   7.     </request-map>  
   8.   
   9.     <!-- end of request mappings -->  
  10.   
  11.     <!-- View Mappings -->  
  12.     <view-map name="error" page="/error/error.jsp"/>  
  13.     <view-map name="main" type="screen" page="component://hello2/widget/HelloScreens.xml#main"/>  
  14.     <view-map name="news" type="screen" page="component://hello2/widget/HelloScreens.xml#news"/>  
  15.     <!-- end of view mappings -->  

<!-- 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文件如下:
Java代码

   1. <s>页面头...</s>  
   2. <a href="<@ofbizUrl>/main</@ofbizUrl>">首页</a>  
   3. <a href="<@ofbizUrl>/news</@ofbizUrl>">新闻</a>  
   4. <hr>  

<s>页面头...</s>
<a href="<@ofbizUrl>/main</@ofbizUrl>">首页</a>
<a href="<@ofbizUrl>/news</@ofbizUrl>">新闻</a>
<hr>

news.ftl文件内容如下:


Java代码

   1. <html>  
   2. <head>  
   3. <title>Hello World - news</title>  
   4. </head>  
   5. <body>  
   6. <h1>news</h1>  
   7. <p>news page start ...............!</p>  
   8. </body>  
   9. </html>  

<html>
<head>
<title>Hello World - news</title>
</head>
<body>
<h1>news</h1>
<p>news page start ...............!</p>
</body>
</html>

  HelloScreens.xml 文件修改如下:
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?>  
   2. <!-- This file contains screens for the Team section -->  
   3.   
   4. <screens xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-screen.xsd">  
   5.   
   6.    <screen name="commonDecorator">  
   7.          <section>  
   8.             <widgets>  
   9.                 <platform-specific>  
  10.                     <html><html-template location="component://hello2/webapp/hello2/includes/headers.ftl"/></html>  
  11.                 </platform-specific>a  
  12.                 <decorator-section-include name="body"/>  
  13.                 <platform-specific>  
  14.                     <html><html-template location="component://hello2/webapp/hello2/includes/footers.ftl"/></html>  
  15.                 </platform-specific>  
  16.             </widgets>  
  17.         </section>  
  18.     </screen>  
  19.     <screen name="main">  
  20.         <section>  
  21.             <widgets>  
  22.                 <decorator-screen name="commonDecorator">  
  23.                     <decorator-section name="body">                 
  24.                     <platform-specific>  
  25.                         <html><html-template location="component://hello2/webapp/hello2/main.ftl"/></html>  
  26.                     </platform-specific>  
  27.                     </decorator-section>   
  28.                 </decorator-screen>  
  29.             </widgets>  
  30.         </section>  
  31.     </screen>  
  32.     <screen name="news">  
  33.         <section>  
  34.             <widgets>  
  35.                <decorator-screen name="commonDecorator">  
  36.                     <decorator-section name="body">                 
  37.                     <platform-specific>  
  38.                         <html><html-template location="component://hello2/webapp/hello2/news.ftl"/></html>  
  39.                     </platform-specific>  
  40.                     </decorator-section>   
  41.                 </decorator-screen>  
  42.             </widgets>  
  43.         </section>  
  44.     </screen>  
  45.   
  46. </screens>  

<?xml version="1.0" encoding="UTF-8"?>
<!-- This file contains screens for the Team section -->

<screens xmlnssi="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学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP