3

我在使用 p:ajax 更新属性元素时遇到了问题。当我在我的代码中使用时,我<p:ajax update="@all" />得到了javax.el.PropertyNotFoundException. 当我使用时,<f:ajax render="@all" />我没有得到任何东西。我认为 thouse 标签几乎相同。谁能解释发生了什么?

我正在使用 mojjara 实现、primefaces 3.5 和 Liferay jsf portlet 桥。

堆栈跟踪示例:

引起:javax.el.PropertyNotFoundException:/pages/views/personForm.xhtml @95,99 value="#{personManagementBean.item.contact.phoneNumber}":目标无法到达,'null' 在 com.sun.faces 返回 null .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) 在 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) 在 javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214) :1214) 在 javax.faces.component.UIForm.processValidators(UIForm.java:253) 在 javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)processValidators(UIComponentBase.java:1214)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>                                                                     
4

1 回答 1

8

OptimusPrime(Primefaces 的主要开发者)指出这update="@all"是一个坏主意,primefaces 并没有通过设计链接到论坛帖子来实现它。

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

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

我相信如果您仍然有它,这应该可以解决您的问题,或者在这里供将来参考。

于 2013-12-12T07:02:55.403 回答