jsf - 显示 p :dialog using oncomplete only if custom validation in action was passed

标签 jsf primefaces jsf-2

当我尝试在 oncomplete 属性中进行测试时,我在显示对话框时遇到问题。
但是当我刷新页面时它工作正常,我必须刷新支持 bean 中变量的每次更改。 即使我在没有测试的情况下显示对话框,它也能正常工作。 问题出在 Debug模式下。当我在调用操作后进行测试时,JSF 不调用 get

<p:commandButton value="#{msg.LABEL_ADD}"
                 action="#{axeBean.calculer}"
                 style="width:100px;"
                 update="msgs"
                 oncomplete="if(#{axeBean.formvalide})  PF('dialog').show()" />

formvalide 是一个 bool 值

我该如何解决这个问题?

最佳答案

我仍然相信问题的核心应该通过应用我标记为重复的问题的答案来解决。由于您遇到了几个问题,我会在这里给您一些建议。

PrimeFaces oncomplete doesn't refresh the variable on test ... But when I refresh the page it worked fine.

你的按钮显然在你点击它之前就被渲染了。所以 oncomplete 属性也被渲染了。它不是动态的。因此在调用操作时不会重新计算。
如果您需要在某些 JavaScript 调用中访问 #{axeBean.formvalide},请将其用作隐藏输入的值,并在调用操作后更新输入。现在您可以使用 document.getElementById('hiddenInputsClientId').value 获取它。

另见:

I have a problem showing a dialog when I try to do a test in the oncomplete attribute.

您不需要公开自己的validationFailed。 PrimeFaces 将在 oncomplete 函数中为您提供一个 args 对象,如果验证失败,该对象包含一个 validationFailed 属性。所以只需使用:

oncomplete="if (args &amp;&amp; !args.validationFailed) PF('dialog').show()"

另见:

validationFailed worked just with required and client side validation, but I want to validate something in backing...

只需在操作中执行您需要执行的检查即可。如果您的自定义验证失败,您可以在 Faces 上下文中设置一个标志:

FacesContext.getCurrentInstance().validationFailed();

如果需要设置错误信息,使用:

FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "message", null);
FacesContext.getCurrentInstance().addMessage("clientId", message);

这里可以使用null作为clientId来设置全局消息。

如果您使用 OmniFaces ,你可以简单地使用:

Faces.validationFailed();
Messages.addError("clientId", "message");

另见:

我不确定您在做什么检查...您可能最好创建一个自定义验证器。见:

关于jsf - 显示 p :dialog using oncomplete only if custom validation in action was passed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43804326/

相关文章:

jsf - 使用 Servlet 3.0 以编程方式控制登录

html - 样式 p :fileUpload button size

jsf-2 - 如何在 PrimeFaces 中以编程方式创建对话框?

java - 数据映射器模式的数据一致性

jsf - 默认情况下要打开 Accordion 面板的多个选项卡

java - 检索 jsf/primefaces 支持 bean 中的 url 路径

jsf - 对话框更新和打开调用后构造

java - 如何在 JSF 中支持同一种语言的多个区域设置?

java - 使用 jsf 编写 JavaScript

JSF 2 全局异常处理,导航到错误页面未发生