2010-02-16 17 views
9

Sto lottando per ottenere la struttura della mia applicazione GWT giusta. (Sono l'unico a scoprire che il codice GWT finisce facilmente molto disordinato e illeggibile?)GWT - Più moduli?

L'applicazione dovrebbe essere un'interfaccia per un paio di aree ben distinte - diciamo area A e B Al momento sto cercando di implementarlo come un'interfaccia con due schede: una che ti porta all'area A e una che ti porta all'area B. Non vedo come posso avere una bella separazione del codice necessario per le due diverse aree in questo modo, , applicando il pattern MVP (che in realtà non trovo chiaro come farlo in un caso di un'interfaccia gerarchica come le mie schede), finisco per avere l'area A e l'area B istanza sia client.view che client.presenter pacchetto:

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

non sono stato in grado di trovare qualsiasi buoni esempi di come e quando utilizzare più moduli e mi chiedo se il mio caso potrebbe essere quello in cui più moduli avrebbe senso? Come sarebbe strutturato il codice in quel caso?

Forse è importante menzionare che sto utilizzando l'ultima IDEA GWT, Maven e IntelliJ.

suggerimenti sarebbe molto apprezzato, grazie molto da Stine :)

risposta

0

propongo qualcosa di simile:

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

Scusate se sono un po 'lento qui! Ma ciò si traduce in due moduli? – Stine

+2

No, per questo sono necessari due file modulo: http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideModuleXml - vedere la sezione "Dividere il codice in più moduli" –

+0

Sì, so che ogni modulo prende un gwt.xml :) Quello che intendevo (immagino) era se il codice può essere inserito nella struttura sopra e fare ancora parte dello stesso modulo. Se implica due moduli, potrei avere un po 'di problema nel capire cosa succede a tutte le immagini HTML, css e le immagini che ho nella mia cartella webapps. Accidenti, mi piacerebbe solo vedere un esempio completo! > Bene, suppongo che dovrei iniziare dando un'occhiata alla sezione che suggerisci - per qualche ragione mi è sfuggito quello! ;) Grazie .. – Stine

2

Considerare dichiarando più elementi di origine nel file yourmodule.gwt.xml. Se non vengono dichiarati elementi di origine, per impostazione predefinita gwt assume una dichiarazione "client". Vedere di seguito:

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

È possibile dichiarare più sedi di origine in questo modo:

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

Ora tutto sotto ogni sorgente verranno compilati. "Cliente" è solo l'impostazione predefinita, non la regola.

10

Ecco un esempio più completo che mi ha aiutato a ottenere due moduli di lavoro: http://ashtoncthomas.blogspot.com/2011/02/multiple-modules-in-google-web-toolkit.html

Esso utilizza la struttura:

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

Se si desidera che due pagine HTML - uno per ogni modulo (come ho ha fatto), quindi è necessario creare due pagine:

war 
    page_a.html 
    page_b.html 

e definire il punti di entrata nei tuoi due file .gwt.xml, per esempio (per 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> 

Dove A_entry_point è una classe che implementa EntryPoint.

Poi, nelle pagine HTML, includono solo il modulo che si desidera (per esempio, in page_a.html):

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

Inoltre, se si sta utilizzando Eclipse, poi quando si fa clic su "GWT Compila progetto ", ti chiederà di" Aggiungi una classe di entry point ", quindi devi fare clic sul pulsante" Aggiungi "nella sezione" Moduli punto di ingresso "della finestra Compilazione GWT e aggiungere entrambi i moduli del punto di ingresso (a_stuff.gwt.xml e b_stuff.gwt.xml). È possibile aggiungere/rimuovere i moduli del punto di ingresso da qui, se necessario, per scegliere quali moduli compilare.

Quanto sopra ha funzionato per me. L'ho usato per creare due diverse versioni del mio sito web, ognuna in un modulo separato.

+1

Salve, ma cosa si tratta del file WAR/WEB-INF/web.xml? Il loro è un "" ... perché dovrei scegliere una pagina predefinita? Questo web.xml deve avere il servlet dall'Admin e dall'app Utente? – nzaero