首页 > 解决方案 > 如何在 freemarker 文件中包含屏幕的部分

问题描述

在 moqui 中,如何在 *.ftl 文件中包含屏幕部分。我尝试使用 <#include "component://path-to-screen"> 但没有任何反应。在 ofbiz 中,我可以使用这种模式:

${screens.render("component://common/widget/CommonScreens.xml#myScreen")}

moqui中的类似模式是什么???

标签: 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 参数,其中包含当前屏幕中的部分名称或完全限定的屏幕位置加上一个散列和部分名称,如您的示例中所示。


推荐阅读