JSF ajout de paramètres de requête

Je suis en utilisant JSF et j'ai un backing bean méthode qui fait un peu de traitement et établit un
la variable "résultat" qui décide ensuite de la page suivante pour naviguer jusqu'à selon sur les
faces-config.xml règles de la navigation.

Ce que je veux faire est d'ajouter des paramètres à l'URL (dans le backing bean?) lorsque la page suivante est à utiliser pour la navigation.
Toutefois, dans le Gestionnaire d'où le backing bean méthode est, il n'y a aucune référence à l'
Objet HttpRequest. C'est là un gestionnaire qui a été autour pendant un long moment, donc je
je me demande comment je peux faire

request.setAttribute("name", value);

Est-il une approche différente disponible pour le JSF? Toute aide appréciée.


HI BalusC,

Je suis en train de mettre en œuvre ce que vous avez expliqué ci-dessous, cependant je suis confronté à un problème.
C'est ce que j'ai:

StringBuffer url = ( (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getRequestURL();
    url.append( "?serialNumber=");
    url.append(regBean.getSerialNumber());
try{                     FacesContext.getCurrentInstance().getExternalContext().redirect(url.toString());
}catch (Exception ex){
    ex.printStackTrace();
}

Il n'y a pas d'exception générée mais j'ai un Http 500 erreur "le serveur a rencontré une erreur inconnue." Le journal montre un peu plus en détail, mais pas assez pour être utile:

ERREUR [cycle de vie] JSF1054: (Phase ID: INVOKE_APPLICATION 5, Vue ID: /enregistrement/productValidation.jsp) Exception levée lors de la phase d'exécution: javax.des visages.de l'événement.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@591dae]
11:19:12,186 ERREUR [[Faces Servlet]] Servlet.service() de la servlet Faces Servlet jeté exception
java.lang.IllegalStateException
au org.apache.catalina.connecteur.ResponseFacade.sendRedirect(ResponseFacade.java:435)
au com.soleil.des visages.contexte.ExternalContextImpl.redirect(ExternalContextImpl.java:421)
au com.soleil.des visages.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:181)
au com.soleil.des visages.application.ActionListenerImpl.processAction(ActionListenerImpl.java:130)
au javax.des visages.composante.UICommand.diffusion(UICommand.java:387)
au org.ajax4jsf.composante.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
au org.ajax4jsf.composante.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
au org.ajax4jsf.composante.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
au org.ajax4jsf.composante.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
au com.soleil.des visages.cycle de vie.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
au com.soleil.des visages.cycle de vie.De Phase.doPhase(Phase.java:100)

Toutes les idées, à tous sera très apprécié. Merci!


Ok, merci pour vos commentaires, j'ai changé quelques trucs autour, et maintenant j'ai:

FacesContext.getCurrentInstance().getExternalContext().redirect("mypage.jsp?serialNumber=555555");

Sur le débogage, je peux voir que la redirection fonctionne depuis sur mypage.htm je suis l'affichage des en-têtes d'un resourcebundle (fichier de propriétés) donc, quand il a essayé d'obtenir l'en-tête pour afficher c'est la rencontre d'un NullPointer sur la ligne ci-dessous:

FacesContext context = FacesContext.getCurrentInstance();

contexte est null, le journal montre NullPointer erreur, mais l'url de la page est correcte, je peux voir la barre d'adresse montrant http://..../mypage.jsp?serialNum=5555 tout comme prévu!
Il semble avoir de la difficulté à simplement afficher le contenu de la page. Si proche et pourtant si loin ;-(

OriginalL'auteur msharma | 2009-12-31