2010-10-29 4 views

Répondre

2

Nous utilisons également une combinaison de flux de page Seam et GWT. Explicitement, nous divisons la page de connexion de la page principale pour permettre la connexion via https. Mais, nous n'utilisons pas de pages html normales, nous utilisons toujours des pages xhtml. Vous pouvez inclure une page html GWT dans une page Seam xhtml en enveloppant la paire <html></html> avec une paire <f:view></f:view>:

<f:view 
    contentType="text/html" 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:s="http://jboss.com/products/seam/taglib" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 
    <html> 
     <!-- ... --> 
    </html> 
</f:view> 

En utilisant un tel Seam enveloppé page html, vous n'avez aucun problème pour définir les transitions de page. Comme Peter Knego l'a déjà signalé, il est conseillé d'utiliser différents modules GWT pour différentes pages (x) html.

+0

pourriez-vous s'il vous plaît m'aider avec un exemple simple de votre code. –

+0

Je suis particulièrement intéressé par la façon dont vous mappez les actions de transition sur le flux de la page vers les actions du bouton gwt –

+0

@ Vous ne pouvez pas mapper un flux de page vers un bouton GWT. La communication entre le client GWT et le serveur Seam passe par des appels GWT-RPC asynchrones. Seam gère les appels avec GWTService. Comme l'ont souligné @ z00bs et @Peter Knego, en utilisant une application GWT, vous ne passez pas d'une page à l'autre. Nous utilisons les transitions de page Seam pour décider quelle partie de notre application GWT est fournie au client. Si le client est déjà connecté, nous restituons main.xhtml sinon home.xhtml. Pour plus d'informations sur Seam + GWT, lisez http://docs.jboss.org/seam/2.2.0.GA/reference/en-US/html/gwt.html – kraftan

1

Normalement GWT est une application avec état côté client. Cela signifie que vous exécutez l'application entière dans une page html. Le navigateur ne recharge jamais cette page. Si le navigateur rechargerait cette page, l'état de l'application interne serait perdu (variables, etc.).

Maintenant, vous pouvez certainement créer une application GWT qui a plusieurs pages html. Normalement, vous devez créer différents modules GWT et les charger dans des pages html séparées. Le plugin Eclipse crée une page hôte pour chaque module.

Vous pouvez créer une application Seam normale, copiez simplement les lignes nécessaires à partir des pages hôtes GWT vers vos "pages" Seam. Gardez à l'esprit que ces modules GWT distincts ne partagent aucun état entre eux.

Modifié:

Vous pouvez mapper Seam flux de pages à GWT boutons tels que cliquer sur le bouton vous amène à la page suivante pageflow:

  1. Créer un bouton GWT avec gestionnaire onClick qui contient Window.Location.assign(URL). Cliquez sur ce bouton pour ouvrir l'URL indiquée dans la page du navigateur en cours.
  2. Rendre les URL des pages de flux de page Seam lisibles par l'utilisateur. Je crois (pas un expert sur ceci) c'est fait avec l'attribut view-id="page_url" à l'intérieur de l'élément <page>.

Il s'agit d'un processus manuel (pas de type sécurisé) qui repose sur la correspondance correcte entre ID de vue et URL dans les boutons. Changer d'un côté vous obligera à corriger manuellement l'autre côté. Pour rendre la vie un peu plus facile, vous pouvez créer une fonction qui ajoute un écouteur à Button (ou à tout autre élément dans GWT).

1

Cela dépend fortement de ce que vous essayez d'atteindre. C'est si vous envisagez de créer une application de type page de bureau, où la plupart de l'état est détenu par le client ou la logique principale ainsi que les pages html est fourni par le serveur.

Si vous optez pour l'application de bureau, vous êtes susceptible de créer le côté client de votre application entièrement avec GWT. Pour la demande initiale Seam renvoie une simple page html qui récupère le .nocache.js qui en retour télécharge le script principal compilé .cache.html de votre application. A partir de là, GWT prend le relais (commençant à onModuleLoad() dans le module EntryPoint du module chargé) et construit l'ensemble de la mise en page de votre application en remplaçant la balise <body> de la page html renvoyée.Les interactions et l'état de l'utilisateur sont synchronisés via le serveur, mais le rendu est effectué par GWT.

Si vous optez pour la combinaison de Seam et JSF vous pouvez toujours bénéficier de GWT. Un scénario courant consiste à insérer sélectivement des widgets GWT dans des endroits spécifiques d'une page html existante (voir here pour plus de détails). De cette façon, vous pouvez utiliser Seam pour le rendu, le flux de pages, etc. et étendre vos pages avec des widgets GWT.

BTW, si vous avez besoin de SSL pour l'enregistrement et/ou l'authentification de l'utilisateur (et l'achèvement automatique du formulaire!) Je recommande fortement de le faire comme recommandé par @kraftan. Tout le reste est une douleur.