lunes, 20 de abril de 2015

Objetos implícitos en portlets Liferay

En la anterior entrada (Primer portlet con Eclipse y Liferay) vimos cómo hacer un portlet muy simple, un "Hola, Mundo". Hoy veremos cómo acceder a algo de información útil, relativa al usuario que ha iniciado la sesión en el portal de Liferay.

Si recordáis, el fichero view.jsp es el que contiene la vista del portlet, o sea, lo que se va a mostrar en el "recuadro" que contenga al portlet en la página web, la cual puede contener varios portlets. En esta ocasión, veremos qué hay que añadir a ese fichero para mostrar información del usuario.

El código que vimos en el último ejemplo, se limitaba a mostrar un mensaje de saludo.


Fig. 1. "Hola, Mundo" en todo su esplendor


 Ahora, para mostrar información del usuario, utilizaremos dos objetos: request y user.

El objeto request es un objeto implícito que tenemos disponible para acceso en nuestra página JSP y que representa la solicitud de página que hace el navegador a nuestro servidor. En esa solicitud viene, entre otras cosas, información del usuario que la ha pedido, y podemos acceder a ella a través del método getRemoteUser:

<br>Usuario autenticado: <%=request.getRemoteUser() %>

Este objeto request (y otros como response) están disponibles en todos los portlets y servlets, independientemente de que estemos utilizando Liferay o no. El tipo del objeto request es javax.servlet.http.HttpServletRequest y podéis ver todos sus métodos y atributos aquí:

http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html

Una vez hecha tecleada la línea de arriba en nuestra página view.jsp, podemos observar la salida en nuestra página web:
 
Fig. 2. El usuario tiene un identificador numérico. Hmm... esto no nos dice mucho

 Como se ve, el identificador es un número que no nos es (en principio) demasiado útil. La buena noticia es que Liferay nos da otras variables con las que sacar información interesante, como el nombre del usuario (su login, por ejemplo) y otras. Para tener disponibles estas variables de Liferay debemos incluir estas dos líneas en nuestro código:

<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
<liferay-theme:defineObjects />

Y una vez tecleado eso, ya podemos acceder al login del usuario y su nombre:

<br>Nombre: <%= user.getScreenName() %>
<br>Login: <%= user.getLogin() %>

Así pues, el código comleto nos quedaría así:


Fig. 3. Accediendo al nombre y login del usuario



Lo pongo aquí en modo texto por si alguien quiere copiar y pegar:

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
<liferay-theme:defineObjects />
<portlet:defineObjects />


This is the <b>Hola, Mundo</b> portlet.

<br>Usuario autenticado: <%= request.getRemoteUser() %>
<br>Nombre: <%= user.getScreenName() %>
<br>Login: <%= user.getLogin() %>

Ahora ya podemos ir a la página y ver la salida:


Fig. 4. La información del usuario en un formato más legible

Bien. Ahora ya podríamos tomar decisiones en función del usuario que se conecte (por ejemplo, mostrar una información u otra en función del usuario, gestionar permisos... en fin, todo lo que se nos ocurra y que pueda depender del usuario).

No hay comentarios:

Publicar un comentario