moqui - 如何在 freemarker 文件中包含屏幕的部分
问题描述
在 moqui 中,如何在 *.ftl 文件中包含屏幕部分。我尝试使用 <#include "component://path-to-screen"> 但没有任何反应。在 ofbiz 中,我可以使用这种模式:
${screens.render("component://common/widget/CommonScreens.xml#myScreen")}
moqui中的类似模式是什么???
解决方案
在 Moqui XML 屏幕中,所有 XML 元素都是使用 FTL 宏实现的。对于 HTML 输出,您可以在 runtime/template/screen-macro/DefaultScreenMacros.html.ftl 文件中查看默认 (OOTB) 宏。用于包含其他屏幕部分的 XML 元素是section-include。因为没有处理 XML 屏幕元素的 Java/Groovy 类,所以您可以在宏中看到所有内容。
在这种情况下,有问题的 Moqui API 调用在 ScreenRenderImpl 类上,该类在屏幕中可用,因为它们在“sri”变量中呈现。这是屏幕包含 FTL 宏的相关行:
${sri.renderSection(.node["@name"])}
renderSection() 方法接受一个 String 参数,其中包含当前屏幕中的部分名称或完全限定的屏幕位置加上一个散列和部分名称,如您的示例中所示。
推荐阅读
- php - Wordpress 自定义 do_parse_request 总是返回 404
- shell - 包含在 powershell 中不起作用的字符串
- r - 从语料库中删除特殊字符
- android - Google 登录按钮 Android 理想的从右到左的理想行为
- c++ - 将文本文件的交替行分隔成两个不同但对应的数组 C++
- java - Android - 单击提交按钮后从不同的活动接收错误消息
- cassandra - 如何将部分 Cassandra 表数据导出到另一个 Cassandra db?
- jquery - 数据表不是全宽
- javascript - 复选框使输入不可见
- r - 带选择输入的闪亮分组条形图