Выполните метод bean-компонента перед его использованием на странице JSF - PullRequest
0 голосов
/ 27 ноября 2011

Компонент, находящийся в области запроса, собирает данные от всех других компонентов запроса и бизнес-логики. Этот bean-компонент используется в выражениях EL на странице, но прежде чем этот bean-объект области действия может использоваться на странице, он должен создать каталог, используя собранные данные (это делается после того, как весь сбор закончен, но до того, как свойства bean-компонента могут быть используется на странице).

Как я могу выполнить построение каталога в этом bean-компоненте после всей коллекции, но до того, как он будет использован через выражения EL на странице без использования <f:event>? Мне нужно собрать его только один раз.

@ManagedBean(name="namesDirectory")
@RequestScoped
public class NamesDirectory { 

    public void addForPersonNameRetrieval(Integer id) { // this is used to collect the data in bean
           peopleNamesMap.put(id,null);
           .......
    }

    public void buildDirectory(){ // used, when all collection is over, to build the diirectory      
           .......
    }

    public String getPersonName(Integer id) { // used in the JSF page through EL expressions
        name = peopleNamesMap.get(id);
    }

}

Здесь buildDirectory() необходимо выполнить в конце всей коллекции, но перед использованием getPersonName() на странице JSF

1 Ответ

2 голосов
/ 27 ноября 2011

У вас есть несколько вариантов. Вы можете перестроить каталог после каждой вставки или перед каждым извлечением, однако это может привести к ненужным перестройкам. Вы можете перестроить каталог только при необходимости и вызвать:

  • Добавить флаг requiresRebuild и установить его по умолчанию true.
  • Установите true в addForPersonaNameRetrieval.
  • Установите false в buildDirectory.
  • Позвоните buildDirectory в getPersonName, если требуется перестройка.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...