【问题标题】:Show p:dialog using oncomplete only if custom validation in action was passed仅当自定义验证通过时才使用 oncomplete 显示 p:dialog
【发布时间】:2017-10-03 21:34:30
【问题描述】:

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

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

formvalideboolean

我该如何解决这个问题?

【问题讨论】:

  • 谢谢你......但这只是在你需要在 jsf 客户端上进行消息或验证时解决,但是当我从支持返回一条消息时,它不能清楚地工作:)
  • 坚持使用 JSF 并使用消息和验证失败(您可以从支持 bean 设置它们)。不要重新发明轮子;-)
  • 我已经做到了validationFailed只适用于必需和客户端验证......但对我来说,我想在支持bean中验证同样的东西但不工作......即使我有消息错误它也会调用对话框

标签: jsf primefaces jsf-2


【解决方案1】:

我仍然认为应该通过对我标记为重复的问题应用答案来解决问题的核心。当你遇到几个问题时,我会在这里给你一些指示。

PrimeFaces oncomplete 不会在测试中刷新变量...但是当我刷新页面时它工作正常。

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

另见:

当我尝试在 oncomplete 属性中进行测试时,显示对话框时出现问题。

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

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

另见:

validationFailed 仅用于必需和客户端验证,但我想在支持中验证某些内容...

只需执行您在操作中需要执行的检查即可。如果您的自定义验证失败,您可以在 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");

另见:

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

【讨论】:

  • 非常感谢 .. 问题是我没有在 Faces 上下文中设置标志。在我有一个验证错误之后......再次thnaks
猜你喜欢
  • 2012-09-09
  • 2016-09-21
  • 1970-01-01
  • 2020-08-08
  • 2023-03-04
  • 1970-01-01
  • 2011-06-17
  • 2012-06-02
  • 1970-01-01
相关资源
最近更新 更多