【问题标题】:Primefaces <p:ajax update="@all" /> doesn't workPrimefaces <p:ajax update="@all" /> 不起作用
【发布时间】:2013-05-03 05:44:22
【问题描述】:

我在使用 p:ajax 更新属性元素时遇到了问题。当我在我的代码中使用&lt;p:ajax update="@all" /&gt; 时,我得到javax.el.PropertyNotFoundException。当我使用&lt;f:ajax render="@all" /&gt; 时,我什么也没有。我虽然那个 thouse 标签几乎是一样的。谁能解释发生了什么?

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

堆栈跟踪示例:

原因:javax.el.PropertyNotFoundException:/pages/views/personForm.xhtml @95,99 value="#{personManagementBean.item.contact.phoneNumber}":目标无法到达,'null' 返回 null 在 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) 在 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>                                                                     

【问题讨论】:

  • 你试过 吗?
  • Target Unreachable, 'null' returned null 建议 itemcontactnull。你验证了吗?
  • RongNK:最初我没有尝试 但它确实有效。我对这里发生的事情更加困惑。认为 commandButton 中的 update 属性与 p:ajax 标记中的属性具有相同的功能。 BalusC:它是空的(我没有在任何地方初始化它)但是只要我不使用 ,代码就可以工作。我认为 EL 是“空安全的”(如果有类似的东西存在的话:D)。

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


【解决方案1】:

OptimusPrime(Primefaces 的主要开发者)表示 update="@all" 是个坏主意,primefaces 没有按设计实现它 link to forum post

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

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

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

【讨论】:

    猜你喜欢
    • 2013-12-22
    • 2013-04-02
    • 1970-01-01
    • 2011-08-20
    • 2014-05-15
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多