`

ofbiz 一步一步学习hello word (hello2)

阅读更多

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics