2009-04-03 5 views
1

J'ai un projet qui sera composé principalement de servlets Java, de pages JSP/Html et d'un javascript courant. Cependant, il y a quelques écrans qui seront trop complexes à faire en javascript, donc je vais utiliser GWT pour ça.Gestion de plusieurs pages de Google Web Toolkit dans 1 Projet

Est-il possible de faire cela, donc il y a plusieurs classes EntryPoint dans le même projet? Puis, en fonction de la page en cours de chargement, je vais charger le fichier javascript approprié?

Je pensais que peut-être, la fonction RootPanel.get() sera utilisée pour vérifier si certains <div>s existent avec un ID donné. Par exemple, si le div d'inscription existe, chargez le contrôle GWT d'inscription, si "div" de recherche existe, puis chargez la recherche, mais cela rendra le fichier javascript très large. Je préfère que chaque composant soit dans son propre fichier javascript.

Est-ce possible?

Répondre

1

Je pense qu'il serait préférable de séparer les pages en modules GWT. Si vous utilisez RootPanel.get() pour vérifier si un emplacement spécifique (DIV ou autre élément) existe, votre module contiendra toute votre interface utilisateur, de sorte que le client chargera tout le module, accédant seulement à une page - ce qui sera inutile. Vous pouvez placer du code commun dans un module dont hériteront tous les modules de vos pages. RootPanel.get() est préférable pour vous d'avoir des ensembles de widgets (panneaux logiques dans votre interface utilisateur, par exemple le menu, le contenu principal, etc.) et vous pouvez les placer dans les emplacements appropriés sur la page.

Exemple de structure dans votre application ressemblerait (voir la question dans le commentaire):

- gwtui 
-- common (module1) 
--- client 
---- widgets (eg. common widgets) 
---- ... 
---- ApplicationService.java 
---- ApplicationServiceAsync.java 
--- public 
---- images (common images etc.) 
---- css (common style) 
---- ... 
--- server 
---- ... 
---- ApplicationServiceImpl.java 
--- GwtCommon.gwt.xml 
-- expenses (module2) 
--- client 
---- ExpensesEntrypoint.java 
--- public 
--- server 
--- GwtExpenses.gwt.xml (inherits GwtCommon, entry point ExpensesEntrypoint) 
-- reports (module2) 
--- client 
---- ReportsEntrypoint.java 
--- public 
--- server 
--- GwtReports.gwt.xml (inherits GwtCommon, entry point ReportsEntrypoint) 

Notez que vous pouvez utiliser un service dans tous les modules, ainsi dans le module commun que vous pourriez ne pas créer point d'entrée (mais je ne suis pas sûr à 100%, dans un ancien projet, j'ai dû créer un point d'entrée vide, mais ne me souviens pas de la raison exacte - désolé)

Cela a fonctionné pour nous.

Je voudrais certainement entendre des opinions différentes.

+0

Je veux les garder dans des modules séparés, mais comment pouvez-vous faire cela? Je pensais qu'un projet pouvait avoir seulement 1 classe EntryPoint, ou pouvez-vous en avoir plusieurs? Si vous pouvez montrer un exemple de code de comment avoir 2 modules ce sera fantastique .. –

+0

J'ai édité l'article original pour montrer ma solution avec plusieurs modules. Si besoin d'explications fuhrer faites le moi savoir. Et encore une fois - je ne dis pas que c'est la meilleure approche, mais je ne connais pas encore mieux. – Konrad

1

est ici à cinq minutes de discours que je l'ai fait sur ce sujet précis de l'éclair: http://www.youtube.com/watch?v=0DuR9xDvrHA&feature=channel_page

Naturellement, vous ne pouvez pas mettre beaucoup d'informations en 5 minutes, donc nous espérons que cela vous donnera assez pour y aller, mais si vous avez d'autres questions, n'hésitez pas à demander.

J'ai l'intention de rendre plus d'échantillons de code disponibles mais je n'ai pas trouvé l'heure.

Questions connexes