MyException - 我的异常网
当前位置:我的异常网» 开源软件 » ofbiz一个组件的各个文件引见

ofbiz一个组件的各个文件引见

www.MyException.Cn  网友分享于:2013-09-10  浏览:0次
ofbiz一个组件的各个文件介绍

 

<?xml version="1.0" encoding="UTF-8"?>
<forms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://ofbiz.apache.org/Widget-Form"
       xsi:schemaLocation="http://ofbiz.apache.org/Widget-Form 
       http://ofbiz.apache.org/dtds/widget-form.xsd">
    <!--定义一个表单,属性有这个表单的类型,请求地址,默认实体名 默认的map集合名-->
    <form name="" type="" target="" default-entity-name="" 
          default-map-name="" default-table-style="">
        <!--表单内的输入框等,一个field对应一个-->
        <field name="" title="">
            <!--输入框的类型,input.text hyperlink,drop-down等-->
            <text/>
        </field>
        <field name="" title="">
            <check all-checked=""/>
        </field>
    </form>

</forms>
 新建一个组件,使用gradle 命令

 

 

gradlew createPlugin -PpluginId=sword -PpluginResourceName=Sword 
-PwebappName=sword -PbasePermission=SWORD

 这个命令的详细介绍,可以阅读ofbiz项目中的README.md文件中的了解。

 

创建之后目录如下:


使用命令创建的组件默认是在specialpurpose下,这个目录与hot-deploy目录都是存放组件的目录,

两者的区别就在于specialpurpose目录有图中component-load.xml文件,如图:

 如果我们将创建的组件移动到hot-deploy目录下则不需要添加该文件就可以加载组件

 

进入模块后,ofbiz-component.xml文件,该文件中定义了项目启动时,加载该组件时,需要加载的文件。

 

<?xml version="1.0" encoding="UTF-8"?>
<ofbiz-component name="sword"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd">

    <!--定义资源加载器-->
    <!-- define resource loaders; most common is to use the component resource loader -->
    <resource-loader name="main" type="component"/>

    <!-- 加载config和dtd目录的配置文件-->
    <!-- place the config directory on the classpath to access configuration files -->
    <classpath type="dir" location="config"/>
    <classpath type="dir" location="dtd"/>

    <!-- 加载jar包,在build目录中的lib文件夹中的jar包,在lib目录中的jar包 -->
    <!-- load single or multiple external libraries -->
    <classpath type="jar" location="build/lib/*"/>
    <classpath type="jar" location="lib/*"/>

    <!--加载该组件中定义的实体文件-->
<entity-resource type="model" reader-name="main"
 loader="main" location="entitydef/entitymodel.xml"/>
<!-- <entity-resource type="eca" reader-name="main"
 loader="main" location="entitydef/eecas.xml"/> -->
     <!-- 加载数据文件 -->
<entity-resource type="data" 
reader-name="seed" loader="main" location="data/SwordTypeData.xml"/>
                                                     
<entity-resource type="data" reader-name="seed"
 loader="main" location="data/SwordSecurityPermissionSeedData.xml"/>
<entity-resource type="data" reader-name="demo"
 loader="main" location="data/SwordSecurityGroupDemoData.xml"/>
<entity-resource type="data" reader-name="demo"
 loader="main" location="data/SwordDemoData.xml"/>

    <!--加载service文件-->
    <!-- service resources: model(s), eca(s) and group definitions -->
    <service-resource type="model" loader="main" location="servicedef/services.xml"/>
    <!--
    <service-resource type="eca" loader="main" location="servicedef/secas.xml"/>
    <service-resource type="group" loader="main" location="servicedef/groups.xml"/>
    -->
    <test-suite loader="main" location="testdef/SwordTests.xml"/>

    <!-- web applications; will be mounted when using the embedded container -->
    <!-- web应用配置
    name 为该组件名,
    base-permission为访问的权限,
    mount-point为组件访问的路径,如果为/就是输入https:localhost:8443直接访问 -->
    <webapp name="sword"
        title="Sword"
        server="default-server"
        location="webapp/sword"
        base-permission="OFBTOOLS,SWORD"
        mount-point="/sword"/>
</ofbiz-component>

 

 

当在浏览器中输入https://localhost:8443/sword回车访问该组件时,

因为在sword/webapp/sword/index.html文件中定义的一句代码,

访问会重定向到:https://localhost:8443/sword/control/main,该文件中只定义了一句话:

 

<%response.sendRedirect("control/main");%>

 

不过在单独模块中该语句好像不能用。因为我改了没作用,不知道为啥!

 

因为在新建组件时,web.xml文件会自动创建,所以这里就不再说明了。

 

接着是接受请求并指定跳转的controller.xml文件

该文件路径为:sword/webapp/sword/WEB-INF/controller.xml.

 

<?xml version="1.0" encoding="UTF-8"?>
<site-conf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://ofbiz.apache.org/Site-Conf" 
xsi:schemaLocation="http://ofbiz.apache.org/Site-Conf 
http://ofbiz.apache.org/dtds/site-conf.xsd">
    <!-- The controller elements that are common to all OFBiz components
         can be found in the following xml file. A component can override the
         elements found in the common-controller.xml file. -->
    <!--引入其他的controller.xml文件-->
    <include location="component://common/webcommon/WEB-INF/common-controller.xml"/>

    <description>Sword Component Site Configuration File</description>


    <!-- Events to run on every request after all other processing (chains exempt) -->
    <!--
    <postprocessor>
        <event name="test" type="java" path="org.apache.ofbiz.webapp.event.TestEvent" 
invoke="test"/>
    </postprocessor>
    -->
    <!--接受请求,请求的路径只有在这里配置才会响应或跳转-->
    <!-- Request Mappings -->
    <request-map uri="main">
        <!--权限安全设置,这两个属性代表是否使用https,和是否需要登录,需要登录的话,
请求这个uri的话会要求登录-->
        <security https="true" auth="true"/>
        <!--请求成功后的响应-->
        <response name="success" type="view" value="main"/>
        <!--请求失败后的响应-->
        <response name="error" type="view" value="main"/>
    </request-map>
    <!--根据请求中定义的response的value值对应,一个view-map可能有多个response指向-->
    <!-- View Mappings -->
<view-map name="main" type="screen" page="component://sword/widget/SwordScreens.xml#main"/>
</site-conf>

 

 

 

配置国际化信息的SwordUiLabels.xml,路径是sword\config\SwordUiLabels.xml,

 

<?xml version="1.0" encoding="UTF-8"?>
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-properties.xsd">
    <property key="SwordApplication">
        <value xml:lang="en">Sword Application</value>
        <value xml:lang="zh">Sword应用程序</value>
        <value xml:lang="zh-TW">Sword應用程式</value>
    </property>
    <property key="SwordCompanyName">
        <value xml:lang="en">OFBiz: Sword</value>
        <value xml:lang="zh-TW">OFBiz: Sword</value>
    </property>
    <property key="SwordCompanySubtitle">
        <value xml:lang="en">Part of the Apache OFBiz Family of Open Source Software</value>
        <value xml:lang="it">Un modulo della famiglia di software open source Apache OFBiz</value>
        <value xml:lang="zh">开软件OFBiz的组成部分?</value>
    </property>
    <property key="SwordViewPermissionError">
        <value xml:lang="en">You are not allowed to view this page.</value>
        <value xml:lang="zh">不允许你浏览这个页面?</value>
    </property>
</resource>

 

 

存放权限数据,权限组数据的文件,这些文件的数据一半是让我们来导入的,不会让我们去编辑。 

 

最后是最主要的显示用的screen文件,


 

定义组件中菜单screen的文件SwordMenus.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<menus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns="http://ofbiz.apache.org/Widget-Menu" 
       xsi:schemaLocation="http://ofbiz.apache.org/Widget-Menu 
       http://ofbiz.apache.org/dtds/widget-menu.xsd">
    <menu name="MainAppBar" title="${uiLabelMap.SwordApplication}"
          extends="CommonAppBarMenu" 
          extends-resource="component://common/widget/CommonMenus.xml">
        <!--定义一个叫做main的菜单按钮,嵌套的link标签是该菜单按钮的跳转uri,
        会由controller.xml文件接收-->
        <menu-item name="main" title="${uiLabelMap.CommonMain}">
            <link target="main"/>
        </menu-item>
    </menu>
</menus>

 ⒉定义在页面中使用的form表单SwordForms.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<forms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://ofbiz.apache.org/Widget-Form"
       xsi:schemaLocation="http://ofbiz.apache.org/Widget-Form 
       http://ofbiz.apache.org/dtds/widget-form.xsd">
    <!--定义一个表单,属性有这个表单的类型,请求地址,默认实体名 默认的map集合名-->
    <form name="" type="" target="" default-entity-name="" 
          default-map-name="" default-table-style="">
        <!--表单内的输入框等,一个field对应一个-->
        <field name="" title="">
            <!--输入框的类型,input.text hyperlink,drop-down等-->
            <text/>
        </field>
        <field name="" title="">
            <check all-checked=""/>
        </field>
    </form>
</forms>
 ⒊定义该组件公共装饰器的文件,CommonScreen.xml
<?xml version="1.0" encoding="UTF-8"?>
<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://ofbiz.apache.org/Widget-Screen"
         xsi:schemaLocation="http://ofbiz.apache.org/Widget-Screen 
         http://ofbiz.apache.org/dtds/widget-screen.xsd">

    <screen name="main-decorator">
        <!--公共的装饰器-->
        <section>
            <actions>
                <!--加载国际化文件,设为组件全局-->
                <property-map resource="SwordUiLabels" 
                              map-name="uiLabelMap" global="true"/>
                <property-map resource="CommonUiLabels" 
                              map-name="uiLabelMap" global="true"/>

                <!--设置模块页面的左上方的公司名和页面的title
                 title显示的是国际化文件中SwordCompanyName的值
                 -->
                <set field="layoutSettings.companyName" 
                     from-field="uiLabelMap.SwordCompanyName" global="true"/>
                <set field="layoutSettings.companySubtitle" 
                     from-field="uiLabelMap.SwordCompanySubtitle" global="true"/>

                <set field="activeApp" value="sword" global="true"/>

                <!--这个应该是与项目公共的模块菜单有关 注释后会整个模块报错-->
                <set field="applicationMenuName" value="MainAppBar" global="true"/>

                <!--引入该模块的菜单文件-->
                <set field="applicationMenuLocation" 
                     value="component://sword/widget/SwordMenus.xml" global="true"/>

                <!--应用标题,我不知道是在哪显示的-->
                <set field="applicationTitle" 
                     value="${uiLabelMap.SwordApplication}" global="true"/>
            </actions>
            <widgets>
                <!--引入公共的全局装饰器-->
                <include-screen name="GlobalDecorator" 
                                location="component://common/widget/CommonScreens.xml"/>
            </widgets>
        </section>
    </screen>

    <screen name="SwordCommonDecorator">
        <section>
            <actions>
            </actions>
            <widgets>
                <decorator-screen name="main-decorator" 
                                  location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <section>
                            <!--验证权限信息-->
                            <condition>
                                <if-has-permission permission="SWORD" action="_VIEW"/>
                            </condition>
                            <widgets>
                                <decorator-section-include name="body"/>
                            </widgets>
                            <fail-widgets>
                                <!--无法登陆后的提示信息-->
                                <label style="h3">${uiLabelMap.SwordViewPermissionError}</label>
                            </fail-widgets>
                        </section>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
</screens>

 ⒋定义接受请求后返回的显示的screen的文件,SwordScreens.xm

 

<?xml version="1.0" encoding="UTF-8"?>
<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://ofbiz.apache.org/Widget-Screen"
         xsi:schemaLocation="http://ofbiz.apache.org/Widget-Screen 
         http://ofbiz.apache.org/dtds/widget-screen.xsd">

    <screen name="main">
        <section>
            <actions>
                <!--先点选该组件后,深色显示该组件被选择-->
                <set field="headerItem" value="main"/>
                <!-- this highlights the selected menu-item with name "main" -->
            </actions>
            <widgets>
                <!--使用定义在CommonScreen,section属性name为body-->
                <decorator-screen name="SwordCommonDecorator" 
                                  location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <!--这里添加表单screen-->
                        <include-form name="" location=""/>
                        <!--添加菜单screen-->
                        <include-menu name="" location=""/>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
</screens>

 暂时主要用到的文件就是这些,写的好乱,唉

 

 

 

 

 


 

文章评论

老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
总结2014中国互联网十大段子
总结2014中国互联网十大段子
如何成为一名黑客
如何成为一名黑客
10个调试和排错的小建议
10个调试和排错的小建议
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
我的丈夫是个程序员
我的丈夫是个程序员
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
为什么程序员都是夜猫子
为什么程序员都是夜猫子
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
中美印日四国程序员比较
中美印日四国程序员比较
程序员都该阅读的书
程序员都该阅读的书
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
程序员必看的十大电影
程序员必看的十大电影
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员和编码员之间的区别
程序员和编码员之间的区别
那些争议最大的编程观点
那些争议最大的编程观点
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
旅行,写作,编程
旅行,写作,编程
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
老程序员的下场
老程序员的下场
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
代码女神横空出世
代码女神横空出世
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员的鄙视链
程序员的鄙视链
程序员应该关注的一些事儿
程序员应该关注的一些事儿
鲜为人知的编程真相
鲜为人知的编程真相
一个程序员的时间管理
一个程序员的时间管理
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
漫画:程序员的工作
漫画:程序员的工作
编程语言是女人
编程语言是女人
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有