JSF2.0: список переменных пользовательского компонента - PullRequest
0 голосов
/ 03 июня 2010

Есть ли способ использования JSF2.0 в связи со списками переменных компонентов? Например, допустим, у меня есть список людей, которых я хотел бы отредактировать. Они представлены на странице в виде списка компонентов PersonEditor, которые позволяют изменять персональные данные. Каждый редактор связан с одним элементом Person. Чтобы это работало, мне нужно выполнить следующие шаги:

По первому запросу:

  1. Получить список людей
  2. Для каждого человека создайте PersonEditor и свяжите его с объектом Person.
  3. Заполнить данные редактора.

Действие пользователя:

  1. Когда пользователь изменяет значения и нажимает Сохранить, данные обрабатываются компонентом поддержки.

Я могу либо заполнить редактор данными из списка людей, либо связать их с компонентом поддержки, но не одновременно, поэтому я застрял.

Я пытался
people.xhtml

<ui:render value="#{bean.people}" var="person">
  <example:personEditor person="#{person}"/>
</ui:render>

где personEditor.xhtml:
а) правильная ассоциация с объектом person, но без связи с компонентом поддержки

<h:form>
  <h:outputText value="#{cc.attr.person.name}"/>
  <h:commandButton name="Save" actionListener="editorBean.save">
    <f:ajax execute="@form" render="@form"/>
  </h:commandButton>
</h:form>

b) нет связи с личным объектом, но есть связь с поддерживающим бином - нет способа передать этого человека поддерживающему бобу

<h:form>
  <h:outputText value="#{editorBean.name}"/>
  <h:commandButton name="Save" actionListener="editorBean.save">
    <f:ajax execute="@form" render="@form"/>
  </h:commandButton>
</h:form>

Если бы у меня был каждый редактор на отдельной странице, я мог бы передать идентификатор человека в качестве параметра url (используя f: param или f: attribute) и инициализировать его соответствующим образом. Есть ли решение этой проблемы?

1 Ответ

1 голос
/ 31 июля 2010

Хм, интересно, почему до сих пор никто не ответил на это ... Проверьте это:

http://balusc.blogspot.com/2006/06/communication-in-jsf.html

Итак, ваш код будет выглядеть примерно так:

<h:form>
  <h:outputText value="#{cc.attr.person.name}"/>
  <h:commandButton name="Save" actionListener="#{editorBean.save}">
    <f:ajax execute="@form" render="@form"/>
    <f:setPropertyActionListener target="#{editorBean.editedPersonId}" value="#{cc.attr.person.id}" />
  </h:commandButton>
</h:form>

и при вызове editorBean.save атрибут будет содержать идентификатор редактируемого лица (или вы можете передать сам объект person).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...