2009-03-16 4 views
11

come si implementa un pulsante indietro come un pulsante di comando che funziona universalmente? con il pulsante indietro non intendo il pulsante del browser, ma piuttosto un pulsante che si trova da qualche parte sulla pagina. non è sempre possibile utilizzare il pattern Post-redirect-get.indietro commandbutton in jsf

è abbastanza impreciso per passare le informazioni su ogni singolo punto in cui il pulsante dovrebbe puntare.

c'è forse una parola chiave riservata per una regola di navigazione che punta all'ultima regola di navigazione applicata?

risposta

15

Io uso un h:commandLink con l'attributo onclick="history.go(-1)" in questo caso. Funziona universalmente.

+1

Spero che questo mi aiuti, ma non sembra funzionare con h: commandButton. :-( –

+3

Hai davvero bisogno di usare un tag jsf per questo? In caso contrario, prova con . Funzionerà. – alexmeia

+0

Sembra aggiorna la pagina corrente, che non viene più visualizzata, quindi qualsiasi ManagedProperties otterrà eccezioni del puntatore nullo.Qualsiasi idea su come prevenirlo? –

3

La mia prima idea:

su ogni

<h:commandLink .....> 

ed ecc; memorizza la stringa di navigazione in un bean o anche in una pila, quindi il pulsante Indietro può recuperarla e restituirla come per faces-config.xml

Seconda idea.

Ma in riflessione è necessario eseguire l'override o utilizzare un filtro per intercettare i comandi di navigazione e spingerli su una pila. Quindi il pulsante Indietro può solo far scattare la navigazione e andare via.

1

Vorrei archiviare la stringa di navigazione in un tipo di dati di stack e tu usi lo stack.peek() per mostrare qual è il sito dietro di te, e quando viene cliccato fai un evento di azione che innesca lo stack.pop()

1

è possibile utilizzare:

<p:commandButton onclick="window.history.back();"/> 

che istruzioni fare lo stesso come onclick="history.go(-1)" che alexmeia ha detto.

+0

Cattivo modo di usare un pulsante di comando: utilizzare un pulsante 'p: 'oppure aggiungere il pulsante' tipo = 'ad esso Vedere la documentazione PrimeFaces per questo! – Kukeltje