【问题标题】:primefaces dynamic dialog with oneselectmenu带有 oneselectmenu 的 primefaces 动态对话框
【发布时间】:2013-05-15 12:43:45
【问题描述】:

我有一个 p:dialog,其中 dynamic 设置为 true。在命令按钮中,我称它为显示<p:commandButton ajax="true" actionListener="#{bean.setCurrentElement(element)}" oncomplete="myDialog.show" update=":myForm:myDialogId"/>。在对话框中,我有一个<p:selectOneMenu value="#{bean.currentElement.someId}"`

当我单击命令按钮时,代码会爆炸,因为 bean.currentElement 是在动作侦听器完成之前通过将其呈现为 null 来访问的。当我使用&lt;h:outputText&gt; 时,对话框正确显示。我的对话框定义为<p:dialog header="Bla" widgetVar="myDialog" modal="true" id="myDialogId" dynamic="true">

bean 是 viewScoped。为什么在调用动作侦听器方法之前呈现对话框的任何想法。 ?

【问题讨论】:

  • 我认为你是对的,但我得到了这个异常 javax.faces.component.UpdateModelException: javax.el.PropertyNotFoundException: /pages/dialog/myDialog.xhtml @58,73 value="#{bean .currentElement.someId}": 目标不可达,'null' 返回 null
  • 我认为我无法提供 SSCSE,因为它非常复杂,而且我正在尝试处理其他代码。我可以做些什么来确定是什么导致它为每个请求重建。

标签: jsf-2 primefaces


【解决方案1】:

不幸的是,我没有时间弄清楚发生了什么。如果可以这样称呼的话,我所做的就是一个 hack。我在视图初始化期间创建了该类。虚拟对象确保 get 没有爆炸,并且动作侦听器将其设置为正确的对象,然后再次触发以获得正确的值。

我将尝试检查并查看为什么会发生这种情况并发布我的结果。

【讨论】:

    猜你喜欢
    • 2012-06-24
    • 2022-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    相关资源
    最近更新 更多