我在使用p:ajax update atribute元素时遇到了问题。当我在我的代码<p:ajax update="@all" />
中使用时,我得到了javax.el.PropertyNotFoundException
。当我使用<f:ajax render="@all" />
时,我没有得到任何。我虽然thouse标签几乎相同。谁能解释一下发生了什么?
我正在使用mojjara实现,primefaces 3.5和Liferay jsf portlet桥。
stacktrace示例:
引起:javax.el.PropertyNotFoundException:/pages/views/personForm.xhtml @ 95,99 value =“#{personManagementBean.item.contact.phoneNumber}”:目标无法访问,'null'返回null at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100) 在org.primefaces.renderkit.InputRenderer.findImplicitConverter(InputRenderer.java:170) 在org.primefaces.renderkit.InputRenderer.findConverter(InputRenderer.java:190) 在org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:196) at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030) 在javax.faces.component.UIInput.validate(UIInput.java:960) 在javax.faces.component.UIInput.executeValidate(UIInput.java:1233) 在javax.faces.component.UIInput.processValidators(UIInput.java:698) 在javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214) 在javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214) 在javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214) 在javax.faces.component.UIForm.processValidators(UIForm.java:253) 在javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
两个按钮:
<p:commandButton value="not working" action="#{enrollmentManagementBean.cancelEnrollment}">
<p:ajax update="@all" />
</p:commandButton>
<h:commandButton value="working" action="#{enrollmentManagementBean.cancelEnrollment}">
<f:ajax render="@all" />
</h:commandButton>
答案 0 :(得分:7)
OptimusPrime(Primefaces的主要开发人员)指出update="@all"
是一个坏主意,并且主要方面没有按设计link to forum post实现它。
我为了解决这个问题而做的是依靠javascript的页面刷新。只需将其放在按钮的oncomplete
属性中即可。
oncomplete="window.location.replace(window.location.href);"
我相信如果你还有这个问题,这应该可以解决你的问题,或者是为了将来的参考。