Mittwoch, 31. März 2010

Zugriff auf den ServletRequest aus einem Portlet heraus.

Wenn man auf die J2EE-Authentifizierung zugreifen will, muß man Zugriff auf den ServletRequest bekomment. Doch das ist nicht so trivial.

Um aus einem portletRequest auf den httpRequest zuzugreifen muß man ein paar tricks anwenden. Der Request ist durch verschiedene "Wrapper" gut verpackt, die durchstöbert werden müssen. Den folgenden Beispiel-Code kann man dann in eine eigene Util-Klasse zur wiederverwendung ablegen. Die Methode ruft sich rekursiv auf.
z.B.


PortletUtil.getRequest(portletRequest);

Dies ist das was in der Utility geschrieben wurde.


public static HttpServletRequest getRequest(Object r)
{
if (r instanceof PortletRequestWrapper)
{
PortletRequestWrapper portletRequestWrapper = (PortletRequestWrapper) r;
return getRequest(portletRequestWrapper.getRequest());
}

if (r instanceof ServletRequestWrapper)
{
ServletRequestWrapper servletRequestWrapper = (ServletRequestWrapper) r;
return getRequest(servletRequestWrapper.getRequest());
}
return (HttpServletRequest) r;
}

Keine Kommentare:

Kommentar veröffentlichen