如何在Primefaces中显示从服务器端到对话框的消息



早上好,我正在做一个方法,验证数据库中是否存在品牌,并显示一条消息,表明该品牌刚刚存在,我想访问对话框"manageBrand;并将此消息放入其中,从而退出对话框。在Primefaces有可能这样做吗?

<p:dialog id ="manageBrand" header="Brand Details" showEffect="fade" modal="true"
widgetVar="manageBrandDialog" responsive="true">
<p:growl id="messaggi" showDetail="true"/>
<p:panelGrid id="manage-product-content" class="ui-fluid" columns="2">

<p:outputPanel rendered="#{not empty marcaController.selected}">
<div class="p-field">
<p:outputLabel for="name">Name</p:outputLabel>

<p:inputText id="name" value="#{marcaController.selected.nome}" required="true"/>
</div>

</p:outputPanel>  

</p:panelGrid>
<f:facet name="footer">
<p:commandButton value="Save" icon="pi pi-check" action="#{marcaController.creaMarca()}"
update="manage-brand-content" process="manage-brand-content @this"/>
<p:commandButton value="Cancel" icon="pi pi-times" onclick="PF('manageBrandDialog').hide()"
class="ui-button-secondary"/>
</f:facet>
</p:dialog>
public void creaMarca() {
//m = selectedbrand
if(m.getIdmarca()==null) {
List<Marca> list = marcaDao.ricercaMarcaByNome(m.getNome());//find if exixt a brand with selected name
if(list.isEmpty()||list==null) {
try {
marcaDao.create(m);
FacesMessage m = new FacesMessage
(FacesMessage.SEVERITY_INFO, "Creazione andata a buon fine"
,"OK");
FacesContext.getCurrentInstance().addMessage("Success", m);
} catch (Exception e) {
FacesMessage m = new FacesMessage
(FacesMessage.SEVERITY_ERROR, e.getMessage()
,"KO");
FacesContext.getCurrentInstance().addMessage("Error", m);


} 
PrimeFaces.current().executeScript("PF('manageBrand').hide()");
PrimeFaces.current().ajax().update("form:messages", "form:datatable-brands");
}
else {

FacesMessage m = new FacesMessage
(FacesMessage.SEVERITY_INFO, "Brand  exist "
,"OK");

PrimeFacesContext.getCurrentInstance().addMessage(null, m);
PrimeFaces.current().ajax().update(":messaggi","form:manageBrand");
//PrimeFaces.current().dialog().showMessageDynamic(m);

}

}

在您的情况下,根据对话框的id更新对话框将关闭它。为了避免这种情况,您应该只更新所需的元素或其容器,或者删除该更新,并将咆哮设置为autoUpdate。另一种方法应该是将您的消息(服务器端(设置为特定的id。

最新更新