好吧,我有一个p:confirmDialog关闭p:对话框,但是当我尝试关闭p:对话框时,那是行不通的。
这是我的p:confirmDialog代码:
<p:confirmDialog id="confirmCancelar" message="Deseja cancelar ?" showEffect="fade" hideEffect="fade"
header="Cancelar" severity="alert" widgetVar="confirmCancelar" appendToBody="true">
<p:commandButton value="Sim" update="messages"
oncomplete="confirmCancelar.hide()"
actionListener="#{dentistaMB.cancelar}" type="button" />
<p:commandButton value="Não" update="messages"
onclick="confirmCancelar.hide()" type="button" />
</p:confirmDialog>
我的actionListener是:
public void cancelar(ActionEvent event){
dentista.setPessoaFisica(new PessoaFisica());
dentista.getPessoaFisica().setSexo(new Sexo());
dentista.getPessoaFisica().setEstadoCivil(new EstadoCivil());
dentista.getPessoaFisica().setSituacao(new SituacaoPessoa());
dentista.getPessoaFisica().setUf(new Uf());
RequestContext.getCurrentInstance().execute("dialogCadastrar.hide()");
addInfoMessage("Cancelado com sucesso");
}
当我点击“Não”按钮时,p:ConfirmDialog隐藏正常,但是当我点击“Sim”按钮时没有调用actionListener,我尝试调试actionListener cancelar并且它从未被调用过。
编辑1
伙计们,我改变了我的代码p:confirmDialog(代码吼叫),但是现在p:对话框正常关闭,但是p:ConfirmDialog在屏幕上继续。
<p:confirmDialog id="confirmCancelar"
message="Deseja cancelar ?"
showEffect="fade" hideEffect="fade" header="Cancelar"
severity="alert" widgetVar="confirmCancelar"
appendToBody="true">
<p:commandButton value="Sim" oncomplete="confirmCancelar.hide()"
action="#{dentistaMB.cancelar}"
update=":formAlterar" />
<p:commandButton value="Não" onclick="confirmCancelar.hide()"
type="button" />
</p:confirmDialog>
答案 0 :(得分:0)
从type="button"
移除"Sim" commandButton
。由于类型为按钮时不会调用onComplete
。通常onComplete
与ajax调用有关。
答案 1 :(得分:0)
如果您不需要特殊情况,请尝试将oncomplete更改为onclick。它对我有帮助。
答案 2 :(得分:0)
如果您使用action
(在您的情况下为action="#{dentistaMB.cancelar}"
),我认为没有必要将事件作为参数传递给方法“cancelar”。这可能是您没有调用actionListener“cancelar”的原因。
您可以尝试使用public void cancelar()
代替public void cancelar(ActionEvent event)
。
如果您必须传递活动,我认为您应该使用 actionListener 而不是操作。
也就是actionListener="#{dentistaMB.cancelar}"