学习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
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
Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
CCNA学习笔记 CCNA学习笔记 CCNA学习笔记
人工智能学习笔记,人工智能学习笔记,人工智能学习笔记人工智能学习笔记,人工智能学习笔记,人工智能学习笔记人工智能学习笔记,人工智能学习笔记,人工智能学习笔记人工智能学习笔记,人工智能学习笔记,人工智能...
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) ...
2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip...
docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,...
PHP个人学习笔记
"Android学习笔记" Android学习笔记是Android开发者的必读书籍,书中涵盖了Android系统架构、Activity、Intent、资源管理等多方面的知识。本笔记对应的学习资源《第一行代码》是Android开发者的入门必读书籍,书中...
Contiki学习笔记:进程、事件、etimer关系 Contiki 实例: Contiki学习笔记:创建两个交互进程 Contiki 主函数剖析: Contiki学习笔记:main函数剖析 Contiki学习笔记:启动一个进程process_start Contiki学习笔记...