У меня есть тег mediaOutput, который в своем атрибуте createContent требует, чтобы бэк-компонент находился в определенном состоянии. Список значений, который заполняется методом init, должен быть доступен.richfaces keepAlive не работает
Поэтому я добавил тег keepAlive для всего бэкэнда. Теперь я действительно вижу backingBean вместо некоторого (richfaces) прокси-компонента, но заполненный список снова является нулевым.
Как это сделать?
Я проверил, что был вызван метод init, и список заполняется в методе init.
<a4j:keepAlive beanName="myBean" />
<a4j:mediaOutput createContent="#{myBean.writeChart}" ... />
Подложка боб
public class MyBean implements Serializable {
public List list;
public void init(ActionEvent event) {
// call some resource to fill the list
list = service.getItems();
}
public void writeChart(final OutputStream out, final Object data) throws IOException {
// list is null
}
// getters & setters
}
То есть, хотя это работает, именно то, что я пытался предотвратить ... Бэк-бэк содержит другие материалы для одной и той же страницы, поэтому все его содержимое в области сеанса не рекомендуется , Создание отдельного компонента для него neihter. Вот почему keepAlive был введен .. –
да, но, возможно, mediaOutput не проходит через обычные механизмы ajax-request, так что это ваш единственный способ. Возможно, вам нравится использовать какой-то объем разговора (оркестр, шов). см. мое обновление для другого bean – Bozho
Возможно, да! Но они могли бы документировать это + тег mediaOutput является частью спецификации a4j, странно, что он не поддерживает другие функции a4j :( –