mog*_*ara 2 jsf primefaces jsf-2
当我尝试在oncomplete
属性中进行测试时,显示对话框时出现问题。
但是当我刷新页面时它工作正常,我必须刷新支持 bean 中变量的每次更改。即使我在没有测试的情况下显示对话框,它也能正常工作。问题出在调试模式。get
在调用操作后进行测试时,JSF 不会调用。
<p:commandButton value="#{msg.LABEL_ADD}"
action="#{axeBean.calculer}"
style="width:100px;"
update="msgs"
oncomplete="if(#{axeBean.formvalide}) PF('dialog').show()" />
Run Code Online (Sandbox Code Playgroud)
formvalide
是一个boolean
。
我该如何解决这个问题?
我仍然相信问题的核心应该通过对我标记为重复的问题应用答案来解决。当你遇到几个问题时,我会在这里给你一些提示。
PrimeFaces
oncomplete
在测试时不会刷新变量......但是当我刷新页面时它工作正常。
您的按钮显然在您单击它之前就已呈现。所以oncomplete
属性也被渲染了。它不是动态的。因此,在调用操作时不会重新评估它。
如果您需要#{axeBean.formvalide}
在某些 JavaScript 调用中访问,请将其用作隐藏输入的值,并在调用操作后更新输入。现在您可以使用document.getElementById('hiddenInputsClientId').value
.
也可以看看:
当我尝试在
oncomplete
属性中进行测试时,显示对话框时出现问题。
您不需要公开自己的validationFailed
. PrimeFaces 将args
在oncomplete
函数中为您提供一个对象,validationFailed
如果验证失败,该对象将包含一个属性。所以只需使用:
oncomplete="if (args && !args.validationFailed) PF('dialog').show()"
Run Code Online (Sandbox Code Playgroud)
也可以看看:
validationFailed
仅使用必需的和客户端验证,但我想在支持中验证某些内容...
只需执行您在操作中需要执行的检查即可。如果您的自定义验证失败,您可以在 Faces 上下文中设置一个标志:
FacesContext.getCurrentInstance().validationFailed();
Run Code Online (Sandbox Code Playgroud)
如果您需要设置错误消息,请使用:
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "message", null);
FacesContext.getCurrentInstance().addMessage("clientId", message);
Run Code Online (Sandbox Code Playgroud)
这里可以使用null
asclientId
来设置全局消息。
如果您使用的是OmniFaces,您可以简单地使用:
Faces.validationFailed();
Messages.addError("clientId", "message");
Run Code Online (Sandbox Code Playgroud)
也可以看看:
我不确定你在做什么检查......通过创建自定义验证器你可能会更好。看:
归档时间: |
|
查看次数: |
2139 次 |
最近记录: |