Как открыть произвольный URL в новом окне с помощью кнопки PrimeFaces

у меня ниже выходного звена выполняет свою работу:

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

Он открывает URL-адрес, полученный как свойство bean в новом окне.

тем не менее, я хотел бы превратить ссылку в кнопку в PrimeFaces look'n'feel. Я попробовал, как показано ниже:

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

но он только открывает текущую страницу в новом окне, а не URL, указанный как свойство bean. Как я могу этого достичь?

1 ответов


на <p:commandButton> в основном отправляет запрос POST на URL-адрес, указанный его родителем <h:form>, который по умолчанию действительно является текущим URL-адресом запроса (вы знаете, "postback"). The action атрибут в основном вызывает метод bean и использует возвращаемое значение в качестве результата навигационного случая. URL-адрес не обязательно представляет собой разумный результат навигационного случая.

просто использовать window.open() вместо простого <p:button>.

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

вы также можете сделать это на <p:commandButton>, но это излишне усложняет дело.