2016-04-20 22 views
1

i eine unter Methode in Thema habe:Fetch das Sitzungsobjekt gesetzt in liferay Thema Java-Methode in Portlet doView() -Methode

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)throws IOException,    ServletException { 
    ((HttpServletRequest) request).getSession().setAttribute("test", "abc"); 
    } 

i in doView Methode der Portlet-oben-Session-Objekt zu holen versuchen.

HttpSession httpSession =PortalUtil.getHttpServletRequest(renderRequest).getSession(); 
System.out.println("httpSession obj"+(String)httpSession.getAttribute("test")); 

Ich habe sogar versucht, wie unten verwenden:

HttpServletRequest request1 =PortalUtil.getHttpServletRequest(renderRequest); 
HttpServletRequest originalRequest = PortalUtil.getOriginalServletRequest(request1); 
HttpSession httpsession = originalRequest.getSession(); 
System.out.println("httpSession ==> " + httpsession);//session object gets printed 
System.out.println("test "+httpsession.getAttribute("test"));//null 

i erhalten den Nullwert, wenn ich von doview Methode zu holen versuchen. Kann jemand vorschlagen, wie Sie den Wert von Thema zu Portal holen

Antwort

0

Sie erhalten nur die portletRequest angepasst an die ServletRequest Schnittstelle. Zusätzlich benötigen Sie PortalUtil.getOriginalHttpServletRequest().

Here's some more information über den Unterschied zwischen den beiden.

Sollten Sie es verwenden? Nr.

Ich kann mir nicht vorstellen, was das Thema in die Sitzung schreiben müsste. Und die Reihenfolge der Ausführung ist möglicherweise nicht einmal definiert.

Was sollten Sie stattdessen verwenden? Ich weiß nicht, wie ich Schriftarten weiß, was Sie in erster Linie erreichen möchten

+0

Können Sie mich bitte in meinem Fall führen, sollte ich HttpSession verwenden httpSession = PortalUtil.getOriginalHttpServletRequest() (renderRequest) .getSession(); System.out.println ("httpSession obj" + (Zeichenfolge) httpSession.getAttribute ("Test")); –

+0

Siehe meine bearbeitete Antwort –

+0

das Thema sollte den Sitzungsobjektwert session.setAttribute schreiben ("test", "abc"); wie oben gezeigt. Reihenfolge der Ausführung? Diese Methode wird auf der Last des Themas ausgeführt. , Ich versuche, diesen Sitzungsobjekt Wert Test von Thema zu doview() -Methode von Portlet zu holen. –