outcome link jsfcljs ejemplos jsf jsf-2 primefaces commandlink

jsf - link - p commandbutton ejemplos



p: commandLink no abre la página en una nueva ventana/pestaña (7)

Estoy tratando de crear un enlace para abrir una nueva página en una ventana / pestaña diferente y mostrar algunos mensajes desde el bean de respaldo, pero no lo hago. Me pregunto por qué.

Aquí está mi archivo xhtml:

<html:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:ui="http://java.sun.com/jsf/facelets"> <h:body> <h:form id="form66"> <p:commandLink actionListener="#{testing.getMessage}" action="msg.xhtml" target="_blank">get Msg</p:commandLink> </h:form> </h:body> </html>

Aquí está mi página Msg.xhtml

<HTML xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:ui="http://java.sun.com/jsf/facelets"> <h:head> <title>testing</title> </h:head> <h:body> <div class="div"> <p:panel> <f:facet name="header"> testing </f:facet> <div class="paddingForPanel"> <h:outputText value="#{testing.msg}" escape="false"/> </div> </p:panel> </div> </h:body> </HTML>

Aquí está mi testing.java

public void getMessage() { this.msg = "haha"; } private String msg; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; }


el código de arriba no abre una nueva pestaña / ventana, trato de hacer lo siguiente, es exitoso abrir la nueva página en una nueva pestaña pero el mensaje está vacío, cuando debug, tuve éxito, llame al oyente getMessage, me pregunto ¿Por qué el msg está vacío en la página msg.xhtml? Gracias por adelantado....

<p:commandLink actionListener="#{testing.getMessage}" oncomplete="window.open(''msg.xhtml'')">broadcast Msg</p:commandLink>


Si está utilizando remotecommand, entonces puede hacer esto

<p:remoteCommand name="lookAndBookNewTab" process="@this" action="#{lookAndBookMB.onPageLoadForNewTab()}" rendered="#currentUserManager. hasPermission(''LookAndBook'',''View'')}" update=":messageForm:growl" />

Y mi javascript:

<script> if(event.ctrlKey &amp;&amp; event.shiftKey &amp;&amp; event.keyCode == 119) { lookAndBookNewTab(); event.preventDefault(); </script>

Método de acción ServerSide:

public String onPageLoadForNewTab(){ HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); String url = req.getRequestURL().toString(); url=(url.substring(0, url.length() - req.getRequestURI().length()) + req.getContextPath() + "/"); url=url+navigationpagename+".jsf"; RequestContext.getCurrentInstance(). execute("window.open(''"+url+"'',''_blank'')");** return ""; }


Ambos no funcionan, por lo que el problema no se encuentra en las primarias ajax. Problema en el atributo de destino de p: commandLink no funciona ...

<p:commandLink value="New Window" ajax="false" target="_blank" action="test"/> <p:commandLink value="New Window" target="_blank" action="test"/>

Asi que tenemos que usar

<h:commandLink value="New Window" target="_blank" action="test"/>


Lo hago así:

<p:commandLink id="link" actionListener="#{testing.getMessage}" oncomplete="popupwindow(''msg.xhtml'', ''newwindow'');" > <h:outputText value="broadcast Msg" /> </p:commandLink>

Con algunos javascript:

<script type="text/javascript"> function popupwindow(url, title) { window.open(url , title, "toolbar=no, scrollbars=yes, resizable=yes, top=170, left=170, width=800, height=600"); } </script>

En este ejemplo abres una nueva ventana, espero que sea de ayuda!


Me gusta esto

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC ''-//W3C//DTD XHTML 1.0 Transitional//EN'' ''http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd''> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"> <h:head> <h:outputStylesheet library="base" name=''jquery-ui-1.8.16.custom.css'' /> </h:head> <span style="background-color: rgb(192, 192, 192);"> <h:form target="_blank"> <p:commandButton value="Run" action="#{bean.createReport}" /> </h:form> </span> </html>

ver: ingrese la descripción del enlace aquí


Me gusta esto,

<h:link target="_blank" value="Other page" outcome="your url"></h:link>

¡Buena suerte!


Prueba esto en tu código de controlador, funcionó perfectamente para mí.

HttpServletResponse res = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); String uri = req.getRequestURI(); res.getWriter().println("<script>window.open(''" + myUrl + "'',''_blank'', ''location=yes,height=600,width=800,scrollbars=yes,status=yes''); window.parent.location.href= ''"+uri+"'';</script>"); FacesContext.getCurrentInstance().responseComplete();


<p:commandLink> tiene algunos problemas de ajax, use <h:commandLink> lugar.

<h:commandLink actionListener="#{testing.printMessage}" action="/Msg.html" target="_blank">get Msg</h:commandLink>

cambió <p:commandLink> a <h:commandLink> y su código funciona bien.