Estos días, estoy trabajando en un portlet que, por diversas razones, necesita saber en qué página aparece del portal. Aunque parezca una estupidez, he pasado bastante tiempo mirando cómo obtener esta información, ya que parece, esto no está contemplado por el estandar de construcción de Portlet.

Finalmente, he logrado la respuesta para Liferay y, de nuevo, era mucho más simple de lo que parecía, por eso lo de estúpido. De todos modos, ahí va, por si alguien se puede evitar perder tiempo con algo como esto.

En el request tenemos un atributo que contiene el objeto ThemeDisplay. Este lo podemos obtener de la siguiente manera:

ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute (
     com.liferay.portal.kernel.util.WebKeys.THEME_DISPLAY);


Si lo usamos dentro de un jsp, no es necesario obtenerlo, ya que Liferay lo hace por nosotros, con lo que sólo tendremos que acceder al objeto themeDisplay:

<%
    long currentGroup = themeDisplay.getParentGroupId();
    long currentLayout = themeDisplay.getLayout().getLayoutId();
%>