0

我在很多地方都读过这篇文章“您最终会想要创建自己的运行时目录并将其保存在您自己的源存储库中......”。谁能告诉我该怎么做?如果我不想丢失一些 OOTB 组件怎么办?

目前我只是计划为自定义开发的组件创建一个单独的 webapp。比方说,我想为 OOTB 组件设置“ootb”挂载点,为定制开发的组件设置空白“”挂载点。我该怎么做?这是我没有成功的尝试:

<webapp-list>
    <webapp name="webroot" http-port="8080" https-enabled="false">
        <root-screen host=".*/ootb" location="component://webroot/screen/webroot.xml"/>
    </webapp>
    <webapp name="customroot" http-port="8080" https-enabled="false">
        <root-screen host=".*" location="component://customroot/screen/customroot.xml"/>
    </webapp>
</webapp-list>

如果这不起作用,那么我能想到的另一种解决方案是只使用“customroot”条目,并将“webroot”添加为其中的 SubScreenItem。“customroot”屏幕将是空白的,我的自定义装饰器将出现在“customapps”屏幕中,这将是“apps”屏幕的对应部分。我所有的屏幕都将使用“customapps”屏幕。

虽然我没有尝试过我上面写的东西,但不知何故感觉就像一个黑客。我相信应该有一些更好的方法来做到这一点。

是的,我已经阅读了这篇文章,我想使用 localhost 并且应该有一些方法可以使用 localhost 来做到这一点。

4

2 回答 2

0

正如您链接到的另一个 StackOverflow 问题中所解释的(在“文章”一词上),在运行时使用的 webapp 元素是根据 web.xml 文件中的“moqui-name”上下文参数选择的 webapp(输入或输出) WAR 文件)。除非您要部署多个 WAR 文件或其他形式的 Web 应用程序,否则这是没有用的。

您所描述的内容将通过在屏幕层次结构中的所需点添加子屏幕来处理。Moqui 中屏幕层次结构的总体思路是,您可以通过各种方式安装“应用程序”的根屏幕(有关这 3 种方法的详细信息,请参见子屏幕元素上的注释或使用 Moqui 制作应用程序一书)。这样做的部分目的是避免安装在 servlet 容器中的多个 webapp,因为这会使事情变得更加复杂,包括:处理身份验证和会话、配置和部署等。

通常对于组件中的应用程序,您需要使用数据库记录将子屏幕添加到层次结构中的现有屏幕,主要来自“webroot”组件。这是 Moqui 中示例应用程序中的一个示例(这在“apps”路径元素下添加了一个“示例”路径元素,其中apps.xml 屏幕安装在根屏幕下,将其放在/apps/example 中) :

<moqui.screen.SubscreensItem screenLocation="component://webroot/screen/webroot/apps.xml"
        subscreenName="example" userGroupId="ALL_USERS" menuTitle="Example" menuIndex="8" menuInclude="Y"
        subscreenLocation="component://example/screen/ExampleApp.xml"/>

这是 PopCommerce 的一个示例,将应用程序的根屏幕安装在根屏幕而不是“应用程序”屏幕下(即使其位于 /popc 而不是 /apps/popc;请注意,这意味着应用程序中的装饰。 xml 屏幕将不会被使用,因为它不在渲染路径中):

<moqui.screen.SubscreensItem screenLocation="component://webroot/screen/webroot.xml"
        subscreenName="popc" userGroupId="ALL_USERS" menuTitle="POP Commerce" menuIndex="9" menuInclude="N"
        subscreenLocation="component://PopCommerce/screen/PopCommerceRoot.xml"/>
于 2015-04-23T16:36:20.877 回答
0

我想我可能问了一个令人困惑的问题,但感谢您抽出宝贵时间大卫。如果我试图改写我的问题,那就是:“如何拥有一个不会使用来自 webroot 或应用程序屏幕的任何 HTML 的装饰器屏幕?”

我想我找到了答案。我刚刚将我的 customroot 屏幕添加为 webroot 屏幕下的 SubScreenItem,并在其中提到了属性Standalone="true"。现在我的 URL:localhost:8080/customroot/foo 没有使用 webroot 或应用程序屏幕中提到的任何内容。

就是这样,现在如果我想让我的所有组件都位于 URL 的根级别,例如:localhost:8080/foo,我认为唯一的方法是将 OOTB 组件转移到其他 URL,例如:localhost:8080 /ootb/apps/AppList 为此,我必须将 webroot 添加为 customroot 屏幕的 SubScreenItem,并将 webroot 的 webapp 条目替换为 customroot 的条目。

该死的,我努力了,它仍然令人困惑。

于 2015-04-23T19:44:49.393 回答