Attach events to the Widget lifecycle so you can call client side Javascript during PostConstruct, PostRefresh, or PreDestroy of the widget.
<div class="card">
<h:form>
<p:growl widgetVar="msgs" />
<h:panelGrid columns="2" cellpadding="7" styleClass="mb-3">
<h:outputLabel for="name" value="Name:" style="font-weight:bold"/>
<p:inputText id="name" value="#{lifecycleView.text}" widgetVar="wgtName">
<f:attribute name="widgetPostConstruct" value="PF('msgs').renderMessage({severity: 'info', summary: 'Widget Created'})"/>
<f:attribute name="widgetPostRefresh" value="PF('msgs').renderMessage({severity: 'info', summary: 'Widget Refreshed'})"/>
<f:attribute name="widgetPreDestroy" value="PF('msgs').renderMessage({severity: 'info', summary: 'Widget Destroyed'})"/>
</p:inputText>
</h:panelGrid>
<p:commandButton value="Submit" update="@form" icon="pi pi-check" styleClass="mr-2" />
<p:commandButton value="Destroy" icon="pi pi-times" onclick="PF('wgtName').destroy(); return false" styleClass="ui-button-danger" />
</h:form>
</div>
@Named
@RequestScoped
public class LifecycleView {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}