В настоящий момент я углубляюсь в JSF 2.0, и мне немного не хватает понимания о "переносе" свойств управляемого компонента из одного представления в другое. Я немного искал, но не нашел действительно хорошего примера, так что если кто-нибудь мог бы указать мне на учебник или объяснить немного, я был бы очень благодарен.
Итак, вот мой сценарий:
Я занимаюсь разработкой приложения для календаря для маленьких площадок. Первое представление select.xhtml
содержит переключатель календаря, в котором пользователь может выбрать конкретную дату:
<html>
...
<h:form>
<!-- Calendar selector from primefaces -->
<p:calendar value="#{calendarSelect.date}" mode="inline" navigator="true" />
<p:commandButton value="Show entries for date" action="day" />
...
Мой соответствующий боб выглядит следующим образом:
@ManagedBean(name="calendarSelect")
@RequestScoped
public class CalendarSelectComponent {
private Date date = null;
... // Getters and setters
Теперь, когда я отправляю форму с select.xhtml
, меня перенаправляют на day.xhtml
<html>
...
<h:form>
The current day ist:
<h:outputText value="#{calendarEdit.date}">
<f:convertDateTime pattern="dd.MM.yyyy" />
</h:outputText>
Теперь поддерживающий боб выглядит так:
@ManagedBean(name="calendarEdit")
@ViewScoped
public class CalendarEditComponent implements Serializable {
private Date date = null;
private CalendarEntryBean currentEntry = null;
private List<CalendarEntryBean> allEntries = null;
....
Сейчас я пытаюсь решить проблему: как передать параметр date
из селектора в редактор ?
Я пробовал несколько вариантов, один из них был таким:
<p:commandButton value="Show entries for date" action="day" />
<f:setPropertyActionListener target="#{calendarEdit.date}" value="#{calendarSelect.date}" />
</p:commandButton>
Отладчик показывает, что действительно, date
свойство calendarEdit
заполняется значением из calendarSelect
, но, поскольку day.xhtml
является новым представлением, создается новый компонент поддержки CalendarEditComponent
а не тот, который я заполнил датой из селектора в представлении select
.
Я читал, что одним из решений было бы создание базового компонента SessionScoped
, который бы сохранял все свои значения. Но я не думаю, что это должно работать, потому что мне не нужна информация в сеансе , я просто хочу, чтобы она «путешествовала» от А к В. Еще один недостаток сеанса Основанный на этом подход заключается в том, что я могу использовать только один селектор и один редактор для каждой сессии - что, я думаю, неприемлемо, если вы думаете о многооконной навигации и т. д.
Я действительно не думаю, что я первый столкнулся с таким сценарием, и я уверен, что JSF предлагает элегантное решение для этого, но я не смог найти это решение.
Итак, еще раз, если кто-нибудь знает, как подойти к этому - я слушаю! ; -)