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

本文介绍如何使用OFBiz框架从hello1应用扩展至hello2应用的过程,包括组件配置、页面设计与装饰、以及添加动态内容的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值