GWT - 多个模块?

9
我在处理GWT应用程序的结构时遇到了困难。(我是唯一一个发现GWT代码容易变得非常混乱和难以阅读的人吗?)该应用程序应该是访问几个不同区域的接口——我们称之为A区域和B区域。目前,我正在尝试将其实现为具有两个选项卡的接口——一个选项卡带您进入A区域,另一个选项卡带您进入B区域。然而,我不知道如何以这种方式对需要用于两个不同区域的代码进行良好分离——如果应用MVP模式(但我实际上并不清楚如何处理类似选项卡这样的层次界面),我会在client.view和client.presenter包中都看到A区域和B区域的代码:
``` src - main - java - client + event - presenter + a_stuff + b_stuff - view + a_stuff + b_stuff : ```
我无法找到任何有关使用多个模块的好例子,并且我想知道我的情况是否适合使用多个模块?在这种情况下,代码将如何构建?
也许值得提及的是,我正在使用最新的 GWT、Maven 和 IntelliJ IDEA。
期待您的指导,谢谢! - Stine
4个回答

10

这里是一个更详细的示例,帮助我使两个模块正常工作: http://ashtoncthomas.blogspot.com/2011/02/multiple-modules-in-google-web-toolkit.html

它使用了以下结构:

src
 - main
     - java
         a_stuff.gwt.xml
         b_stuff.gwt.xml
         - client
              - shared_stuff
              - a_stuff
                   - presenter
                   - view
              - b_stuff
                   - presenter
                   - view

如果你想要两个HTML页面,分别展示每个模块(就像我做的那样),那么你需要创建两个页面:

war
  page_a.html
  page_b.html

在你的两个 .gwt.xml 文件中定义你的入口点,例如(针对 a_stuff.gwt.xml):

<module rename-to='module_a'>

    ... your stuff here ...

    <entry-point class="main.java.client.a_stuff.A_entry_point"></entry-point>
</module>

A_entry_point是实现了EntryPoint接口的一个类。

然后,在你的HTML页面中,只需要包含你想要的模块即可(例如,在page_a.html中):

<script type="text/javascript" language="javascript" 
        src="module_a/module_a.nocache.js"></script>

另外,如果您使用的是 Eclipse,那么当您单击“GWT Compile Project”时,它会要求您“添加一个入口点类”,因此您必须在 GWT 编译窗口的“Entry Point Modules”部分中单击“Add”按钮,并添加您的两个入口点模块(a_stuff.gwt.xmlb_stuff.gwt.xml)。您可以根据需要从此处添加/删除入口点模块,以选择要编译的模块。

以上对我起作用。我使用它来创建网站的两个不同版本,每个版本都在单独的模块中。


1
嗨,但是WAR / WEB-INF / web.xml文件是关于什么的?他们有一个“<! - 默认页面服务->”……为什么我应该选择默认页面?这个web.xml需要包含来自Admin和User应用程序的servlet吗? - user662264

2
考虑在你的 yourmodule.gwt.xml 文件中声明多个 source 元素。如果未声明任何 source 元素,则默认情况下 GWT 假定为 "client" 声明。请参见以下内容:
<!--Default if not declared-->
<source path="client"/>

您可以像这样声明多个源位置:

<source path="a_stuff"/>
<source path="b_stuff"/>

现在每个源下面的所有内容都将被编译。 "Client" 只是默认值,而不是规则。

0
我建议像这样做:
src
 - main
     - java
         + a_stuff
           -client
             - presenter
             - view
             - event
         + b_stuff
           -client
             - presenter
             - view
             - event

抱歉,如果我说得有点慢!但这是否会导致两个模块? - Stine
2
不,你需要两个模块文件:http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideModuleXml - 参见“将代码分成多个模块”一节。 - Igor Klimer
是的,我知道每个模块都需要一个gwt.xml :) 我的意思是(我猜)如果代码可以放入上述结构中并仍然是同一模块的一部分。如果它涉及两个模块,我可能会有点难以理解我的webapps文件夹中所有html、css和图像会发生什么。天哪,我真想看到一个彻底的例子!>D好吧,我应该从查看您建议的部分开始 - 出于某种原因,我错过了那个!;)谢谢。 - Stine


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接