JSF/primefaces - 将属性传递给对话框

Smo*_*lda 2 java dialog primefaces

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

码:

<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>
Run Code Online (Sandbox Code Playgroud)

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

感谢您的任何意见或解答.

Mad*_*ddy 6

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

尝试更改范围以查看.

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