2012-07-23 20 views
10

Ho bisogno di aprire una pagina JSF in una nuova finestra da POST al clic di un <h:commandButton>. So che posso raggiungere questo utilizzando il JavaScript. Ma mi piacerebbe farlo con JSF e non con JavaScript.Apre una nuova finestra dal POST usando h: commandButton

Come posso ottenere questo risultato? Sto usando JSF 2.0.

+0

deve essere una finestra? o può essere una nuova scheda? – Damian

+0

Nuova scheda va bene. Quando si fa clic sul comando Pulsante voglio che una pagina venga aperta in una nuova scheda. – vr3w3c9

+0

in un linkLink, si raggiunge questo obiettivo aggiungendo target = "_ blank", ma penso che non ci sia modo di farlo in un commandButton senza javascript – Damian

risposta

28

L'unico modo non JS è impostare target="_blank" nella genitrice <h:form>.

<h:form target="_blank"> 
    ... 
    <h:commandButton value="Open in new Window" /> 
</h:form> 

Questo riguarda tuttavia tutti non Ajax (!) Le azioni che vengono eseguite nello stesso modulo. Quindi, se sei intelligente, effettua un'azione che non dovrebbe aprire in una nuova finestra un'azione ajax. Tuttavia, ajax è anche JavaScript e hai detto che non vuoi usare JS (spero che non ti lasci scioccato una volta scoperto che PrimeFaces è in realtà pieno di JavaScript).

Se è assolutamente necessario limitarlo a una singola azione, non si può davvero andare in giro chiedendo un piccolo aiuto a JavaScript.

<h:form> 
    ... 
    <h:commandButton value="Open in new Window" onclick="this.form.target='_blank'" /> 
</h:form> 
+0

Grazie mille BalusC. Ha funzionato :) – vr3w3c9

+0

Prego. – BalusC

3

Quando si limita il target solo a una singola azione, è possibile che si desideri ottenere il modulo nel suo stato iniziale. Con l'azione oncklick si imposta la destinazione del modulo su una pagina _blan. Dopo il clic, la pagina viene aperta in una nuova scheda/pagina (attiva l'evento azione). Infine, l'azione di onblur viene attivata e imposta nuovamente il modulo sul suo stato iniziale (il resto dei pulsanti si aprirà nella pagina _self) Con questo codice, è possibile limitare solo ad ah: commandbutton per aprire in una nuova pagina . Il resto dei pulsanti verrà aperto nella pagina principale:

<h:commandButton 
     onclick="this.form.target='_blank'" 
     onblur="this.form.target='_self'" 
     id="listadoRebuts" 
     action="#{giaquaBusquedaCorte.abrirListadoRebuts}" 
     value="#{msg.seqVisorbtnRecibos}"> 
    </h:commandButton> 
+0

Dalla domanda: * "So che posso ottenere ciò usando il javascript, ma vorrei ottenere ciò usando il codice JSF e non Javascript." * – BalusC

Problemi correlati