IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Fonctionnement méthode getNavigationHandler().handleNavigation()


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut Fonctionnement méthode getNavigationHandler().handleNavigation()
    Bonjour à tous.

    Je vous explique mon problème: j'ai 2 applications web distinctes construites toutes les 2 via JSF.

    On me demande aujourd'hui de pouvoir passer d'un écran de l'application A, vers un écran de l'application B en conservant bien entendu la locale de l'utilisateur.

    Ce qui existait pour l'instant c'est une page entry.jsp qui s'occupait de récupérer la langue passée dans l'url et se contentait d'afficher la page d'accueil de l'application. Mais maintenant le besoin a changé et je dois pouvoir directement via un lien hypertexte d'une page de mon application A passer sur une autre page de mon application B.

    L'approche que j'ai eu est la suivante: je fais passer en paramètre dans l'url la page que je désire atteindre ainsi qu'une éventuelle donnée que le bean de destination devra recevoir (id d'un record par exemple).

    Alors voici ce que j'ai fait:

    Ma page JSP qui est appelée directement via l'url (entry.jsp):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
     
     
    <%@page import="javax.faces.context.FacesContext"%>
     
    <%@page import="package.beans.NavigationBean"%><f:view locale="#{navigationBean.initialSetup}">
    	<f:loadBundle var="msg" basename="package.bundle.messages" />
     
    	<html>
    		<body>
    			<%	
    				response.sendRedirect(response.encodeRedirectURL("welcome.faces"));
    			%>
    		</body>
    	</html>
    </f:view>
    Dans la méthode initialSetup de mon NavigationBean, je sette la locale ainsi que la page de destination (après vérification qu'il s'agisse bien d'une page "autorisée") et la donnée associée.

    Dans mon faces-config.xml, j'ai placé cette règle de navigation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	<navigation-rule>
    		<display-name>*</display-name>
    		<from-view-id>*</from-view-id>
    		<navigation-case>
    			<from-outcome>B2420</from-outcome>
    			<to-view-id>/pages/monitoring/monitoringManager.jsp</to-view-id>
    		</navigation-case>
    <navigation-rule>
    Et donc, j'aimerai que lorsque la page entry.jsp soit appelée avec un paramètre page contenant la valeur "B2420" l'application B s'ouvre avec un la page JSP monitoringManager.

    Malheureusement, je ne sais pas trop comment via entry.jsp je pourrais faire exécuter cette navigation-rule...

    Pouvez-vous m'aider? Je suis certain que c'est une bêtise mais je ne parviens pas à trouver.

    Je vous en remercie d'avance!

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    il n'y a plus de scriptlets dans les jsp en JSF, pour la navigation tu peux soit le faire dans le faces-config, ou dans un managedBean.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut
    Le truc c'est que jusqu'à présent, la redirection dans le scriptlet vers welcome.faces fonctionne et si je la retire j'ai une page blanche.

    Et ma navigation-rule dans mon faces-config.xml a bien été écrite non?
    Mais mon problème c'est comment dire, à partir de ma page entry.jsp: "Ok il y a bien une page qui a été passée en argument donc essaye de trouver une navigation-rule la concernant".

    Inutile de préciser que je commence à peine JSF ^^

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par k o D Voir le message
    Le truc c'est que jusqu'à présent, la redirection dans le scriptlet vers welcome.faces fonctionne et si je la retire j'ai une page blanche.

    Et ma navigation-rule dans mon faces-config.xml a bien été écrite non?
    Mais mon problème c'est comment dire, à partir de ma page entry.jsp: "Ok il y a bien une page qui a été passée en argument donc essaye de trouver une navigation-rule la concernant".

    Inutile de préciser que je commence à peine JSF ^^
    pour la page d'accueil tu peux le laisser, pour la navigation, il te faut une action:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:commandButton action="B2420" />
    Sinon n'oublie pas de consulter les cours et faq JSF

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut
    Ok, seulement là je vais créer un bouton sur ma page entry.jsp.

    Or je ne veux pas d'un bouton, je veux que la redirection ou le forward soit automatique. L'utilisateur n'a pas à appuyer sur une bouton de l'application B.

    L'utilisateur naviguant sur l'application A clique sur un lien dirigeant vers entry.jsp de l'application B. Dans ce lien il y a un paramètre "page" qui contient "B2420".
    En arrivant sur entry.jsp, la page "détecte" ce paramètre et redirige donc l'utilisateur sur la page B2420.

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Tu peux utiliser le PhaseListener, récupérer le paramètre de la requete et faire la navigation par exemple.
    ou plus simplement utiliser un bean dans la page pour que le bean soit instancié par JSF et dans son constructeur tu récupère la valeur du paramètre de la requete et faire la navigation.

Discussions similaires

  1. Fonctionnement méthode Application.StartupPath
    Par sandre dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/11/2007, 08h29
  2. Fonctionnement de la méthode DragMode
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/03/2007, 00h17
  3. [2.0][VB.NET]Comment fonctionne la méthode POST ?
    Par nine93 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 24/11/2006, 10h15
  4. Fonctionnement de la méthode Compiler
    Par Cyberbob002 dans le forum 4D
    Réponses: 6
    Dernier message: 21/11/2006, 18h38
  5. fonctionnent de la méthode run dans les threads
    Par L4BiN dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 25/07/2006, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo