Предположим, что у меня есть две страницы в приложении JSF 2: на первой странице отображается таблица объектов (автомобили или что-то еще), а другая страница может отображать детали одного конкретного объекта. Страница таблицы находится в области запроса, потому что объекты должны быть перезагружены каждый раз, когда пользователь ее запрашивает. Страница сведений находится в области видимости. Поэтому, когда я нажимаю на объект внутри таблицы, этот объект должен отображаться на странице сведений. С переадресацией я могу перейти на страницу сведений, но страница подробностей пуста, потому что было создано новое vew. Хорошо, я могу изменить область действия на сеанс, но это приведет к другим проблемам, поэтому я хотел бы иметь страницу с подробными сведениями. Есть ли способ передать аргумент новой области видимости bean?
ОБНОВЛЕНИЕ 1
Вот фрагмент кода с первой попыткой использования параметров представления. Как прокомментировал это, это не сработает. Значение передается как параметр запроса, но на целевой странице значение равно null.
Таблица:
<h:button value="Go to details" outcome="targetPage">
<f:param name="carId" value="This is a test" />
</h:button>
Подробная страница:
<f:metadata>
<f:viewParam name="carId" value="#{bean.id}" />
<f:event type="preRenderView" listener="#{bean.loadData}"/>
</f:metadata>
Bean страницы сведений:
private String id;
public String getId() {
return id;
}
public void setId( String id ) {
this.id = id;
}
public void loadData() {
System.out.println( "Id: " + id );
}
ОБНОВЛЕНИЕ 2
Я нашел свою ошибку. Часть метаданных находилась внутри файла шаблона. Когда я помещаю тег в основной файл для страницы с подробной информацией, он работает. Большое вам спасибо.