2010-02-16 77 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