Nella mia webapp JSF 1.2 ho una pagina con un <h:commandButton>
che richiama un metodo di azione su un backing bean. Questa azione causerà la rimozione/sostituzione dei dati nel database, quindi desidero evitare situazioni in cui l'utente fa clic accidentalmente sul pulsante di comando.JSF - Come implementare un JavaScript "Sei sicuro?" richiede un <h: commandButton>
Vorrei implementare un semplice "Sei sicuro?" richiedere le opzioni "Sì/No" o "OK/Annulla" utilizzando JavaScript. Non sono eccezionale con JavaScript e non ho mai combinato JavaScript con JSF in precedenza. Qualcuno può fornire uno snippet di codice per mostrarmi come implementarlo?
Ecco il pezzo della mia pagina JSP in cui dichiaro il pulsante di comando:
<h:commandButton
id="commandButtonAcceptDraft"
title="#{bundle.tooltipAcceptDraft}"
action="#{controller.actionReplaceCurrentReportWithDraft}"
image="/images/checkmark.gif">
</h:commandButton>
SOLUZIONE:
La soluzione fornita da BalusC funzionato bene. Volevo anche menzionare che è facile usare il testo da un gruppo di risorse come testo del prompt. Sulla mia pagina, ho caricare il pacchetto di risorse con un elemento come questo:
<f:loadBundle basename="com.jimtough.resource.LocalizationResources" var="bundle" />
Il <f:loadBundle>
deve essere all'interno del vostro <f:view>
. Quindi aggiungo il codice fornito da BalusC al mio elemento pulsante di comando, ma sostituisco una stringa dal mio gruppo di risorse per "Sei sicuro?" il testo, in questo modo:
<h:commandButton
id="commandButtonAcceptDraft"
title="#{bundle.tooltipAcceptDraft}"
action="#{controller.actionReplaceCurrentReportWithDraft}"
image="/images/checkmark.gif"
onclick="return confirm('#{bundle.confirmationTextAcceptDraft}')">
</h:commandButton>
La linea nel mio file di risorse inglese (solo un file di testo con le coppie chiave/valore) si presenta così:
# text displayed in user prompt when calling confirm()
confirmationTextAcceptDraft=This will overwrite the current report and cannot be undone. Are you sure?
La soluzione @CoolBeans è corretta nel mio caso perché altrimenti l'azione ricarica la pagina.Sto utilizzando MyFaces e BootsFaces – MitchBroadhead
@MitchBroadhead Quindi l'impl o la libreria di componenti JSF in questione genera l'attributo onclick in modo errato. Basta guardare l'output HTML generato e segnalare il problema allo sviluppatore responsabile. – BalusC
ho archiviato un bug su BootsFaces e Stephan ha risolto il problema ora – MitchBroadhead