【问题标题】:JSF/primefaces - passing property to dialogJSF/primefaces - 将属性传递给对话框
【发布时间】:2011-07-25 20:39:11
【问题描述】:

我目前正在尝试将一些数据从数据表传递到对话框,然后确认一些操作。我的问题是将bean传递给对话框工作正常,但是当我尝试通过单击保存按钮来保存它时,它似乎为空。

代码:

<p:column>
 <p:commandButton value="Mark" update="showPlayers:display" oncomplete="userDialog.show()" >
  <f:setPropertyActionListener value="#{user}" target="#{manageUser.selectedUser}" />
 </p:commandButton>
</p:column>
...
<p:dialog header="Mark" widgetVar="userDialog" resizable="true" id="userDlg"
                       width="400" showEffect="fade" hideEffect="explode" modal="true">
    <h:panelGrid id="display" columns="2"
           <!-- this below works fine -->
      <h:outputText value="#{manageUser.userSelected.email}"/>                      

      <p:commandButton ajax="false" value="Save" actionListener="#{manageUser.addNewFeature}" oncomplete="userDialog.hide()" />

    </h:panelGrid>
 </p:dialog>

当我尝试使用方法 addNewFeature 使用 bean userSelected 时,它解析为 null 并抛出 NullPointerException。我实际上不知道我在哪里失去了对这个实例的引用。这个 bean 是请求范围的。

感谢任何 cmets 或答案。

【问题讨论】:

    标签: java dialog primefaces


    【解决方案1】:
    1. 只要您返回 null 或 void,@ViewScoped bean 就会存在 操作方法(从而导航回同一视图)。
    2. @RequestScoped bean 将在每个请求结束时被丢弃,并且 在每个新请求上重新创建,因此丢失所有原始 属性。

    尝试更改查看范围。

    http://balusc.blogspot.com/2010/06/benefits-and-pitfalls-of-viewscoped.html

    【讨论】:

    • 我尝试了会话范围,希望它能解决我的麻烦。所以我改变了结构,但谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2014-02-03
    • 1970-01-01
    • 2012-11-10
    相关资源
    最近更新 更多