Colpire un metodo bean e redirect su una richiesta GET

Sto usando JSF 2 e PrimeFaces 2.1 su GlassFish.

Dispongo di una pagina destinata a consentire alle persone di eseguire un’azione dopo aver seguito un URL di richiamata (ad esempio come collegamento incorporato nell’email o come parametro URL di richiamata di alcuni servizi di autenticazione o di pagamento esterni). Nel mio caso ho bisogno di resettare la password. L’URL di richiamata ha un parametro GET token modo:

  http://example.com/app/resetPasswordForm.jsf?token=abc123 

Al caricamento della pagina di resetPasswordForm.jsf , devo verificare se il token è valido e redirect alla schermata dell’app principale se non è valido.

Il mio pensiero è di avere un metodo di bean come:

 public String resetPasswordHandler.showResetForm(String token) { if /* token is valid */ { return "resetPasswordForm.jsf"; } else { return "main.jsf"; } } 

Ma come faccio a far sì che quel metodo venga colpito al caricamento della pagina?

Non sai come procedere: i suggerimenti sono ben accetti.

Usa per triggersre un metodo bean prima del rendering della vista e restituisci semplicemente un risultato di navigazione (che sarà implicitamente trattato come un reindirizzamento).

Per esempio

     

con

 @ManagedBean @RequestScoped public class Authenticator { private String token; public String check() { return isValid(token) ? null : "main.jsf"; } // Getter/setter. } 

Se non si è ancora su JSF 2.2, è ansible utilizzare la soluzione in combinazione con ExternalContext#redirect() .

     

con

 @ManagedBean @RequestScoped public class Authenticator { private String token; public void check() throws IOException { if (!isValid(token)) { FacesContext.getCurrentInstance().getExternalContext().redirect("main.jsf"); } } // Getter/setter. } 

Guarda anche:

  • Comunicazione in JSF 2.0 – Elaborazione dei parametri di richiesta GET
  • Per cosa possono essere usati , e ?
  • Come posso elaborare GET parametri URL stringa di query nel bean di supporto al caricamento della pagina?