GWT - несколько модулей? - PullRequest
       6

GWT - несколько модулей?

9 голосов
/ 16 февраля 2010

Я изо всех сил пытаюсь понять структуру моего приложения GWT. (Я единственный, кто считает, что код GWT очень легко получается очень грязным и нечитаемым?)

Приложение должно быть интерфейсом к паре довольно отдельные области - скажем, области 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.

Подсказки будут с благодарностью, Большое спасибо от Stine:)

Ответы [ 4 ]

10 голосов
/ 07 февраля 2012

Вот более подробный пример, который помог мне заставить работать два модуля: 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», он попросит вас «Добавить класс точки входа», поэтому вы должны нажать на кнопку «Добавить» в «Вход Point Modules »окна GWT Compile и добавьте оба ваших модуля точки входа (a_stuff.gwt.xml и b_stuff.gwt.xml). При необходимости вы можете добавлять / удалять модули точек входа, чтобы выбрать модули для компиляции.

Выше работало для меня. Я использовал его для создания двух разных версий моего сайта, каждая в отдельном модуле.

2 голосов
/ 19 декабря 2010

Рассмотрите возможность объявления нескольких исходных элементов в вашем файле yourmodule.gwt.xml. Если исходные элементы не объявлены, то по умолчанию gwt предполагает объявление «client». Смотрите ниже:

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

Вы можете объявить несколько местоположений источника следующим образом:

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

Теперь все под каждым источником будет скомпилировано. «Клиент» - это только значение по умолчанию, а не правило.

0 голосов
/ 17 февраля 2010

Посмотрите на mvp4g

http://code.google.com/p/mvp4g/wiki/MultiModules

0 голосов
/ 16 февраля 2010

Я предлагаю что-то вроде этого:

src
 - main
     - java
         + a_stuff
           -client
             - presenter
             - view
             - event
         + b_stuff
           -client
             - presenter
             - view
             - event
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...