производительность тега facelet - PullRequest
4 голосов
/ 21 июня 2011

У меня есть файл с большим содержимым для отображения.Например, при отображении профиля пользователя каждому выражению EL в <h:outputText/> требуется идентификатор пользователя в качестве аргумента для компонента, который берется из контекста сеанса.Я объявил этот userId в файле xhtml как

<ui:param name="userId" value="#{currentUser.id}"/>

Я передаю этот userId в методы bean как

<h:outputText value="#{profile.getAddress(userId)}"/>
<h:outputText value="#{profile.getContact(userId)}"/>

<s:link>
<f:param name="userId" value="#{userId}"/>
</s:link>

Я ожидаю, что переменная сеанса вызывается один раз для страницы.Но каждый раз, когда обрабатывается userId, вызывается переменная sessiion.Это правильное поведение?Как это оптимизировать?

1 Ответ

1 голос
/ 21 июня 2011

Да, это правильное поведение.Было бы интересно посмотреть, что быстрее.Я предполагаю, что быстрее внедрить currentUser в компонент вашего профиля, а затем извлечь правильный объект оттуда, вместо того, чтобы каждый раз получать адрес и контакт по идентификатору пользователя.(Зависит, если вы кешируете его в компоненте или нет).

Однако я бы попытался оптимизировать его, введя currentUser в компонент профиля.Это стандартный способ сделать это.

...