O Primefaces executa diversas ações no lado do servidor, nesse conjunto do funcionalidades é possível executar javascripts dentro de ManagedBeans/Controller, segue um exemplo a seguir onde dentro de um ManagedBeans/Controller será aberto um p:dialog.
PrimeBackendController.java
package br.com.emmanuelneri.blog; import org.primefaces.context.RequestContext; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import javax.inject.Named; @ManagedBean(name = "primeBackendController") @RequestScoped public class PrimeBackendController { public void abrirDialog() { RequestContext context = RequestContext.getCurrentInstance(); context.execute("dialog.show()"); } }
- RequestContext.getCurrentInstance(): Pega o contexto do Primefaces dentro do contexto atual do JSF;
- execute: executa javascript;
primefaces-backend.xhtml
<!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:p="http://primefaces.org/ui"> <body> <h:form id="form"> <h:commandButton value="Abrir Dialog" actionListener="#{primeBackendController.abrirDialog}" /> <p:dialog header="Effects" widgetVar="dialog" height="100"> <h:outputText value="Dialog Aberto!" /> </p:dialog> </h:form> </body> </html>