Как подсчитать количество просмотров в сеансе JSF пользователя (JSF 2.2)?

Я пытаюсь отслеживать использование просмотров (приближаясь к лимиту в 15 единиц по умолчанию), но не совсем уверен, где получить эту информацию. Доступно ли это где-нибудь в FacesContext?

Использование JSF 2.2, ICEfaces 3.3 и Omnifaces 2.2.


person wsaxton    schedule 11.02.2016    source источник


Ответы (1)


Это зависит от реализации и доступно только при использовании сохранения состояния на стороне сервера.

Основываясь на истории ваших вопросов и вашем соответствующем отчете о проблемах OmniFaces, я сделал вывод, что вы используя GlassFish и, таким образом, Mojarra. Физические представления доступны как атрибут сеанса с ключом com.sun.faces.renderkit.ServerSideStateHelper.LogicalViewMap.

Таким образом, так:

Map<String, Map<String, Object[]>> physicalViews = Faces.getSessionAttribute("com.sun.faces.renderkit.ServerSideStateHelper.LogicalViewMap");
String numberOfViews = physicalViews.size();
// ...

Обратите внимание, что Mojarra непреднамеренно поменял местами значения физических представлений и логических представлений как в именах параметров контекста, так и в кодовой базе. Таким образом, максимальный размер приведенной выше карты (физических представлений) настраивается с помощью com.sun.faces.numberOfLogicalViews, а максимальный размер вложенной карты (логических представлений) настраивается с помощью com.sun.faces.numberOfViewsInSession.

Смотрите также:

person BalusC    schedule 12.02.2016