2010-02-16 80 views
9

我在努力获得我的GWT应用程序的结构。 (我是唯一一个发现GWT代码很容易变得非常混乱且不可读的人吗?)GWT - 多个模块?

该应用程序应该是一个接口,可以是几个不同的区域 - 让我们说区域A和区域B 。此刻,我试图通过 实现它作为一个带有两个选项卡的界面 - 其中一个将您带到区域A ,另一个将您带到区域B.我看不到我如何能够很好地分离所需的代码 这两个不同的领域,这种方式 虽然 - 应用MVP模式(我实际上没有找到明确的如何在像我的标签等分层界面的情况下如何做)我最终有区域A和区域B 代码实例都client.view和client.presenter 包:

 
src 
- main 
    - java 
     - client 
      + event 
      - presenter 
       + a_stuff 
       + b_stuff 
      - view 
       + a_stuff 
       + b_stuff 
: 

我一直没能找到如何以及何时使用多个 模块的任何很好的例子,我想知道如果我的情况可能是一个在多个 模块将使意义?在这种情况下,代码将如何构造?

也许有关提及我使用最新的GWT,Maven和IntelliJ IDEA。

提示将不胜感激, 非常感谢从斯坦:)

回答

0

我建议是这样的:

src 
- main 
    - java 
     + a_stuff 
      -client 
      - presenter 
      - view 
      - event 
     + b_stuff 
      -client 
      - presenter 
      - view 
      - event 
+0

对不起,如果我在这里有点慢!但这是否导致两个模块? – Stine

+2

不,您需要两个模块文件:http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideModuleXml - 请参见“将代码分成多个模块”一节 –

+0

是的,我知道每个模块需要一个gwt.xml :)我的意思(我猜)是如果代码可以被放入上述结构,并仍然是同一模块的一部分。如果它包含两个模块,我可能会有一些问题了解我的webapps文件夹中的所有html,css和图像会发生什么。天哪,我只想看一个彻底的例子! > D,好吧,我应该先看看你建议的部分 - 由于某种原因,我错过了那个! ;)谢谢.. – Stine

2

考虑在yourmodule.gwt.xml文件中声明多个源元素。如果没有声明源元素,那么默认情况下gwt会假设一个“客户”声明。请看下图:

<!--Default if not declared--> 
<source path="client"/> 

你可以声明多个源位置是这样的:

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

现在每个源下的所有内容将被编译。 “客户”只是默认的,而不是规则。

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_stu ff.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编译项目“时,它会要求您添加入口点类,因此您必须单击GWT编译窗口的”入口点模块“部分中的”添加“按钮,并添加入口点模块(a_stuff.gwt.xmlb_stuff.gwt.xml)。您可以根据需要从这里添加/删除入口点模块,以选择要编译的模块。

上面的工作适合我。我用它来创建我的网站的两个不同版本,每个版本都在一个单独的模块中。

+1

嗨,但什么是WAR/WEB-INF/web.xml文件?他们是“<! - 要服务的默认页面 - >”...为什么我应该选择默认页面?此web.xml是否需要从管理员和用户应用程序获得servlet? – nzaero