Primefaces <p:ajax update =“@ all”>不起作用</p:ajax>

时间:2013-05-03 05:44:22

标签: spring jsf-2 primefaces liferay-6 mojarra

我在使用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>                                                                     

1 个答案:

答案 0 :(得分:7)

OptimusPrime(Primefaces的主要开发人员)指出update="@all"是一个坏主意,并且主要方面没有按设计link to forum post实现它。

我为了解决这个问题而做的是依靠javascript的页面刷新。只需将其放在按钮的oncomplete属性中即可。

oncomplete="window.location.replace(window.location.href);"

我相信如果你还有这个问题,这应该可以解决你的问题,或者是为了将来的参考。