jsf - 如何在 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 更新对话框将关闭它。为避免这种情况,您应该只更新所需的元素或其容器,或删除该更新,并将咆哮声设置为自动更新。另一种方法应该是在服务器端将您的消息设置为特定的 id。
推荐阅读
- android - 在android中显示文件的缩略图
- regex - 使用 REGEX 捕获 SGM 标签之间的文本
- python - 读取 csv 文件会产生不同的结果,具体取决于是从 linux 还是 windows 主机读取
- azure-active-directory - Azure AD - Asp.NET 应用程序 - Dns 问题 -AADSTS50011
- swift - updateUIView 功能无法正常工作
- javascript - 为什么我不能分配所有填充值?
- sql - 使用 sql 在 hive 中验证数据类型 decimal(5.2)
- java - 在android中解密文件
- airflow - 如何最好地将“ftp to s3 operator”合并到现有的 Airflow DAG 中?希望使用airflow.providers.amazon.aws.transfers.ftp_to_s3
- pyspark - 如何在 Pyspark 中优化我的 Reduce 函数