JSF / primefaces - передача свойства в диалог - PullRequest
2 голосов
/ 26 июля 2011

Я сейчас пытаюсь передать некоторые данные из таблицы данных в диалоговое окно, а затем подтвердить некоторые действия.Моя проблема в том, что передача 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-компонента, он выбирается равным нулю и выбрасывает исключение NullPointerException.Я на самом деле не знаю, где я потерял ссылку на этот экземпляр.Этот бин является областью запроса.

Спасибо за любые комментарии или ответы.

1 Ответ

6 голосов
/ 26 июля 2011
  1. Bean-компонент @ViewScoped будет существовать до тех пор, пока вы не вернете null или void из методов действия (и, следовательно, вернетесь к тому же представлению).
  2. Bean-компонент @RequestScoped будет обработан к концукаждого запроса и воссоздается при каждом новом запросе, тем самым теряя все исходные свойства.

Попробуйте изменить область видимости для просмотра.

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

...