Liferay устанавливает сеанс и читает его на определенных страницах

Я пытаюсь установить сеанс, которым можно управлять на разных страницах, я смог установить сеанс, используя этот код

HttpSession session1 = request.getSession(false);
String foo = (String) session1.getAttribute("password");
session1.setAttribute("password","authenticated");
out.println(foo);

Этот код написан в хуке Custom JSP (Journal_content/view.jsp).

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

Может кто-нибудь сказать мне, как сделать это в Liferay?.


person Haider Ghaleb    schedule 13.09.2012    source источник
comment
где вы написали этот код?   -  person Prakash K    schedule 13.09.2012
comment
@PrakashK Я отредактировал сообщение и указал, какой тип я использую и где точно.   -  person Haider Ghaleb    schedule 13.09.2012


Ответы (2)


Я думаю, вы можете использовать PortletSession вместо HttpSession вот так:

PortletSession portletSession = renderRequest.getPortletSession();
portletSession.setAttribute("password", "authenticated", PortletSession.APPLICATION_SCOPE);

... и для получения атрибута:

String pwd = (String) portletSession.getAttribute("password", PortletSession.APPLICATION_SCOPE);

Поскольку портлеты OOTB от liferay определяют <private-session-attributes>false</private-session-attributes> в своем liferay-portlet.xml, приведенный выше код разделяет session со всем порталом.

Небольшое примечание из liferay-portlet.xml DTD относительно использования <private-session-attributes>:

Установите для параметра private-session-attributes значение true, если портлет не имеет общих атрибутов сеанса с порталом. Значение по умолчанию верно. Свойство session.shared.attributes в portal.properties указывает, какие атрибуты сеанса являются общими, даже если значение private-session-attributes равно true.

Позвольте мне знать, если это помогает.

person Prakash K    schedule 13.09.2012

Я разместил свой ответ здесь, чтобы передать объект из хуков в портлет .

Если вы хотите совместно использовать объекты между портлетами, вам необходимо установить значение false в файле liferay-portlet.xml исходного портлета.

person Bhuwan Gautam    schedule 30.08.2013