在Moqui

时间:2015-04-22 14:37:15

标签: moqui

我已经在很多地方读过这篇文章"你最终会想要创建自己的运行时目录并将它保存在你自己的源代码库中......"。谁能告诉我怎么做?如果我不想丢失一些OOTB组件怎么办?

目前我只是计划为自定义开发的组件提供单独的Web应用程序。让我们说,我想要" 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>

如果这不起作用,那么我能想到的另一个解决方案就是拥有&#34; customroot&#34;输入,并添加&#34; webroot&#34;作为SubScreenItem。 &#34; customroot&#34;屏幕将只是空白,我的自定义装饰将出现在&#34; customapps&#34;屏幕将成为&#34; apps&#34;的反面部分。屏幕。我的所有屏幕都将使用&#34; customapps&#34;屏幕。

虽然我没有尝试过我上面所写的内容,但不知怎的感觉就像是黑客。我相信应该有更好的方法来做到这一点。

是的,我已阅读article,我想使用localhost,并且应该有一些方法可以使用localhost。

2 个答案:

答案 0 :(得分:0)

正如您链接到的另一个StackOverflow问题(在“文章”一词中)所解释的那样,运行时使用的webapp元素是基于webapp的web.xml文件中的“moqui-name”context-param选择的(进出WAR文件)。除非您正在部署多个WAR文件或其他形式的Web应用程序,否则这无用。

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

通常,对于组件中的应用程序,您需要使用数据库记录将子屏幕添加到层次结构中的现有屏幕,主要来自“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在根屏幕下安装应用程序根屏幕的示例,而不是“apps”屏幕(即将其设置在/ popc而不是/ apps / popc;注意这意味着装饰在不会使用apps.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"/>

答案 1 :(得分:0)

我想我可能会问一个令人困惑的问题,但感谢你的时间大卫。如果我试着改写我的问题,那就是:“如何设置一个不使用来自webroot或应用程序屏幕的HTML的装饰器屏幕?”

我想我找到了答案。我刚刚将我的customroot屏幕添加为webroot屏幕下的SubScreenItem,并在其中提到了属性 standalone =“true”。现在我的URL:localhost:8080 / customroot / foo不使用webroot或apps屏幕中提到的任何内容。

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

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