当我尝试在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()" />
formvalide
是boolean
。
我该如何解决这个问题?
答案 0 :(得分:3)
我仍然相信问题的核心应该通过在我标记为重复的问题上应用答案来解决。当你遇到几个问题时,我会在这里给你一些指示。
PrimeFaces
oncomplete
不会在测试时刷新变量...但是当我刷新页面时它工作正常。
您可以在点击它之前显示您的按钮。因此,oncomplete
属性也被渲染。它不是动态的。因此,在调用动作时不会重新评估它
如果您需要在某些JavaScript调用中访问#{axeBean.formvalide}
,请将其用作隐藏输入的值,并在调用操作后更新输入。现在,您可以使用document.getElementById('hiddenInputsClientId').value
。
另见:
当我尝试在
oncomplete
属性中进行测试时,显示对话框时出现问题。
您无需公开自己的validationFailed
。 PrimeFaces将在args
函数中为您提供oncomplete
对象,如果验证失败,则该对象包含validationFailed
属性。所以只需使用:
oncomplete="if (args && !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");
另见:
我不确定您正在做什么检查......可能是您通过创建自定义验证器更好。参见: