2012-04-02 3 views
3

J'ai un bouton Annuler dans un de la page. Mais la page peut être ouverte à partir de différents endroits, je veux dire la page parent peut varier.Annuler la navigation du bouton dans JSF

Maintenant sur Annuler, je dois revenir à l'exacte page d'où elle vient. comme history.back(). Comment pouvons-nous l'implémenter dans JSF?

Quelqu'un peut-il me guider s'il vous plaît?

Et que history.back() ne fonctionne pas directement.

<h:commandButton type="button" id="cancel" image="#{sessionScope.sessionObject.graphicImageFolderName}cancel_btn.gif" accesskey="#{bundle.oscer_command_cancel_accesskey}" value="Cancel" action="#{templatePrescriptionMaintenanceBackingBean.goBack}" /> 

En cas de history.back je fais même bouton que ..

<h:commandButton type="button" id="cancel" image="#{sessionScope.sessionObject.graphicImageFolderName}cancel_btn.gif" accesskey="#{bundle.oscer_command_cancel_accesskey}" value="Cancel" onclick="javascript: history.back();"/> 

Y at-il quelque chose de mal dans les deux cas?

Répondre

4

Essayez

<h:commandLink onclick="history.go(-1); return false;"> 

Ou

<h:commandButton onclick="history.back(); return false;"> 

travail pour vous?

+0

Merci Daniel, J'ai fait ** Ketan

+0

Vous êtes les bienvenus :) – Daniel

+0

@Daniel il y a un problème avec cette approche. Supposons que sur la page A vous cliquez sur soumettre, la page B s'ouvre maintenant si vous cliquez sur Annuler à la page B la page A viendra. Maintenant, voici la torsion, si vous essayez d'annuler sur la page A, il ouvrira la page B. –

1

Obtenez le gestionnaire de navigation par défaut via Application.getNavigationHandler. Enveloppez-le dans un reflection proxy et définissez le proxy comme nouveau gestionnaire de navigation par défaut via Application.setNavigationHandler. Dans le gestionnaire d'invocation du proxy, vous pouvez suivre tous les événements de navigation avec leurs résultats et créer votre propre historique à partir de celui-ci. Utilisez ensuite cet historique pour gérer la navigation du bouton "annuler" en remontant dans votre historique.

+0

Merci Sylar, Votre réponse est très générale. Pas encore essayé. Mais va sûrement essayer. Merci beaucoup. Vous êtes formidable. – Ketan