jsf-2 - welcome - primefaces themes
¿Puedo actualizar un componente JSF desde un método de beans de respaldo JSF? (3)
¿Hay alguna forma de que un bean JSF Backing cause una actualización de un componente en la página? No estoy buscando usar un componente ajax con el atributo de actualización para actualizar un componente en la página. Necesito activar una actualización desde un método de beans de respaldo JSF. Tenga en cuenta que la actualización en la página puede ocurrir después de que este método finalice o antes de su finalización. Estoy usando PrimeFaces, si hay una solución que pueda obtenerse usando PrimeFaces.
El RequestContext
está en desuso en Primefaces 6.2 . De esta versión, use lo siguiente:
if (componentID != null && PrimeFaces.current().isAjaxRequest()) {
PrimeFaces.current().ajax().update(componentID);
}
Y para ejecutar javascript desde el backbean use de esta manera:
PrimeFaces.current().executeScript(jsCommand);
Referencia:
También traté de actualizar un componente de un jsf bean / clase de respaldo
Debe hacer lo siguiente después de manipular el componente UI:
FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(componentToBeRerendered.getClientId())
¡Es importante usar el ID de cliente en lugar del componente ID de servidor (lado del servidor)!
Usando la API JSF estándar, agregue la ID del cliente a PartialViewContext#getRenderIds()
.
FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add("foo:bar");
Usando la API específica de PrimeFaces, use RequestContext#update()
.
RequestContext.getCurrentInstance().update("foo:bar");
Si usa la biblioteca de utilidades JSF OmniFaces , use Ajax#update()
.
Ajax.update("foo:bar");
Independientemente de la forma, tenga en cuenta que esos ID de cliente deben representar ID de cliente absoluto que no tengan el prefijo NamingContainer
como lo haría desde el lado de vista.