`
zimskybo
  • 浏览: 6209 次
社区版块
存档分类
最新评论

moqui 学习笔记1

阅读更多

学习moqui 我先从Screen 入手

 

moqui screen 不同于ofbiz screen 机制,在ofbiz中screen 只是负责页面的生成,只是众多请求类型中的一种,而moqui 的screen 则是处理所有请求的地方,就相当于ofbiz 中的controller一样。

 

在moqui 中 screen 负责了整个 controller 的内容,页面渲染部分 使用 widget,与业务整合 使用transition。

请求地址代表了你要调用那一个screen 处理。

screen 地址不同于ofbiz 使用component指定等方式,这个地址可以不写,当不指定地址的时候默认去查找当前screen同级的并且同名称的文件夹下的screen xml 文件,例如:

ExampleApp.xml定义了一个screen

<subscreens default-item="Example"> //指定默认screen 位置为 ExampleApp/Example.xml

        <subscreens-item name="ExamplePolicies" menu-index="4" menu-title="Policies"/>

        //位置为 ExampleApp/ExamplePolicies.xml

        <subscreens-item name="ExampleTerms" menu-index="5" menu-title="Terms"/>

        //位置为 ExampleApp/ExampleTerms.xml

        <subscreens-item name="ExampleWiki" menu-index="6" menu-title="Wiki"/>

        //位置为 ExampleApp/ExampleWiki.xml

        <subscreens-item name="ExampleMarkdown" menu-index="7" menu-title="Markdown"/>

    </subscreens>

当然如果你需要指定位置 也可以使用location属性

<subscreens-item name="ExamplePolicies" menu-index="4" menu-title="Policies" location="component://XXXXXXXXXX"/>

 

moqui screen 调用的起始文件是 webroot/screen/webroot.xml 

这个定义位置可以修改,修改位置在 各种moquiXXXconf.xml  默认位置是 runtime/conf/MoquiDevConf.xml

config 文件定义了moqui 运行的所有配置项,而且可以有多个,用于不同情况使用不同配置

配置文件 conf 中 有一条属性:

<root-screen host=".*" location="component://webroot/screen/webroot.xml"/> 定义了请求入口文件

 

这个webroot.xml 中定义了其他模块的入口文件

<subscreens default-item="apps">

        <!-- if the client is an iPad, default to the ipad subscreens item instead of apps, but allow either to be used explicitly -->

        <!-- <conditional-default condition="(ec.web.request.getHeader('User-Agent')?:'').matches('.*iPad.*')" item="ipad"/> -->

 

        <!-- refer to the UNDECORATED (or self-decorating) app roots here -->

    </subscreens>

由于我们知道 apps没有写路径 location  那么它的位置为 webroot/apps.xml文件 也就是所模块的统一入口就是它了。

打开apps.xml 里面有一项

 

 <subscreens default-item="example">

        <!-- refer to the various app roots here -->

        <subscreens-item name="example" location="component://example/screen/ExampleApp.xml"

                         menu-title="Example" menu-index="8"/>

        <subscreens-item name="tools" location="component://tools/screen/Tools.xml"

                         menu-title="Tools" menu-index="9"/>

        <subscreens-item name="system" menu-title="system" location="component://system/screen/system.xml"/>

    </subscreens>

这里是把所有模块入口加载进来的的地方,所以在moqui 教程中 添加模块需要在这个文件中添加一项

红色字体就是我添加的新component入口

 

moqui screen 没有使用ofbiz 的decorator设计模式,它的很多设计模式都发生了改变, 据我了解entity使用了facade 设计模式。在上面我们看到页面的层级嵌套 使用了subscreens 标签,这里的subscreens 是为了实现导航的页面跳转,如果点击页面跳转呢?

 

在moqui screen 中有transition 标签,这个标签负责了大部分的业务处理工作 服务的调用,页面的流转,请求的处理等等等。。。。。

所以点击事件跳转可以在当前screen 中进行处理,有点像一个页面就对应一个controller。暂时还不知道这样做有没有原来ofbiz 把controller 集中处理好,需要在实际应用中检验看看,希望因为到处放处理请求的transition 太乱发晕,但是如果有计划的把通用的transition 放在合适的地方,moqui screen 这种方式肯定比ofbiz 更加直观,更加方便。(终于不用像ofbiz 一样一个文件跳到另一个文件了)。

 

 

 

 

分享到:
评论

相关推荐

    ssh学习笔记1 ssh学习笔记1

    ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1

    Java学习笔记学习笔记

    Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习...

    希沃白板学习笔记.pdf

    希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf

    Springcloud学习笔记.md

    Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...

    云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-基于ssm的云的学习笔记系统-ssm-java代码

    云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...

    CCNA学习笔记 CCNA学习笔记

    CCNA学习笔记 CCNA学习笔记 CCNA学习笔记

    人工智能学习笔记,人工智能学习笔记

    人工智能学习笔记,人工智能学习笔记,人工智能学习笔记人工智能学习笔记,人工智能学习笔记,人工智能学习笔记人工智能学习笔记,人工智能学习笔记,人工智能学习笔记人工智能学习笔记,人工智能学习笔记,人工智能...

    云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-基于Web的云的学习笔记系统设计与实现-java代码

    云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...

    nginx学习笔记(软件+学习笔记)

    nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) ...

    2022吴恩达机器学习笔记汇总(共10章节).zip

    2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip...

    docker学习笔记.md

    docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,...

    PHP个人学习笔记

    PHP个人学习笔记

    第一行代码 android学习笔记 完整版

    "Android学习笔记" Android学习笔记是Android开发者的必读书籍,书中涵盖了Android系统架构、Activity、Intent、资源管理等多方面的知识。本笔记对应的学习资源《第一行代码》是Android开发者的入门必读书籍,书中...

    contiki 学习笔记

    Contiki学习笔记:进程、事件、etimer关系 Contiki 实例: Contiki学习笔记:创建两个交互进程 Contiki 主函数剖析: Contiki学习笔记:main函数剖析 Contiki学习笔记:启动一个进程process_start Contiki学习笔记...

Global site tag (gtag.js) - Google Analytics