2015-06-03 20 views
6

ho il link di uscita di sotto del quale fa il suo lavoro:Come aprire un URL arbitrario in una nuova finestra con un pulsante primefaces

<h:outputLink value="#{verDocumentoController.url()}" target="_blank"> 
    show document 
</h:outputLink> 

Si apre un URL ottenuto come una proprietà di fagioli in una nuova finestra.

Tuttavia, mi piacerebbe trasformare il collegamento in un pulsante in PrimeFaces look'n'feel. Ho provato, come di seguito:

<p:commandButton value="show document" action="#{verDocumentoController.url()}" 
    onclick="form.target='_blank'" ajax="false" /> 

Ma riapre solo la pagina corrente in una nuova finestra e non l'URL specificato come proprietà di fagioli. Come posso ottenere questo comunque?

risposta

10

Il <p:commandButton> invia in sostanza una richiesta POST all'URL come specificato dal suo genitore <h:form>, che di default corrisponde all'URL della richiesta corrente (si sa, "postback"). L'attributo action in pratica richiama un metodo bean e utilizza il valore restituito come risultato del caso di navigazione. Un URL non rappresenta necessariamente un esito caso di navigazione ragionevole.

Basta usare window.open() invece su un semplice <p:button>.

<p:button value="show document" 
    onclick="window.open('#{verDocumentoController.url()}');return false;" /> 

si può anche fare questo su un <p:commandButton>, ma questo è troppo complicata inutilmente.