Galera,
eu acho que o problema é com AJAX, mas não tenho certeza.
O que acontece é que eu tenho uma datatable com um botão pra deletar…
Abre um confirmDialog e quando clica em sim, deveria por ajax atualizar o p:dialog e atualizar o modelo.
O problema é que quando clico em sim, NADA acontece.
Me disseram que era pq o meu form estava no template. Então fiz a modificação e tirei o form do template.
Continuou com o mesmo problema. Também tentei deixar o confirm em outro form, mas também não funcionou.
Então vou postar o código da minha ultima tentativa.
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
template="/templates/template.xhtml">
<ui:define name="content">
<h:form id="mainForm">
<p:messages autoUpdate="true" id="msgs" showDetail="true" closable="true" showSummary="true" />
<p:dataTable <!-- codigo omitido -->
<p:column style="width:80px">
<p:commandButton id="edit" icon="ui-icon-pencil" action="#{grupoController.getFormPath}" ajax="false">
<f:setPropertyActionListener value="#{entity}" target="#{grupoController.entity}" />
</p:commandButton>
<p:commandButton id="delete" icon="ui-icon-trash" onclick="confirmation.show()" type="button" >
<f:setPropertyActionListener value="#{entity}" target="#{grupoController.entity}" />
</p:commandButton>
<p:tooltip for="edit" value="#{msg['button.edit']}" showEffect="clip" hideEffect="clip" />
<p:tooltip for="delete" value="#{msg['button.delete']}" showEffect="clip" hideEffect="clip" />
</p:column>
</p:dataTable>
<!-- DIALOG -->
<!-- Código omitido -->
</h:form>
<h:form id="formDelete">
<!-- CONFIRM DELETE -->
<p:confirmDialog message="#{msg['label.confirm.delete']}" showEffect="bounce" hideEffect="explode"
header="#{msg['label.dialog.alert']}!" severity="alert" widgetVar="confirmation"
appendToBody="true">
<h:commandButton value="#{msg['button.dialog.yes']}" oncomplete="confirmation.hide();" actionListener="#{grupoController.delete}" update=":mainForm:table"/>
<h:commandButton value="#{msg['button.dialog.no']}" onclick="confirmation.hide()" type="button" />
</p:confirmDialog>
</h:form>
</ui:define>
</ui:composition>
Eis o meu actionListener:
public void delete() {
try {
getBaseService().delete(entity);
displayInfoMessageToUser("global.sucess","global.delete.sucess");
} catch (Exception e) {
displayErrorMessageToUser("global.error","global.delete.error");
e.printStackTrace();
}
}
Obrigado ai galera!