« Nazad

Manejando imágenes con Liferay (1): User Portrait

Se describe a continuación el proceso para manejar un tipo específico de imagen dentro de Liferay, la foto asociada a cada usuario.
La visualización de dicha imagen se realiza de la forma más sencilla, mediante la etiqueta HTML img.
Se pasa a describir cómo parametrizar su atributo src para que Liferay muestre la imagen adecuada.

Introducción

El manejo de la fotografía asociada a un usuario se lleva a cabo construyendo una url algo especial:

<img ... src="<%= rutaEspecial %>" />

Esta url se construye de la siguiente forma:

String rutaEspecial =

themeDisplay.getPathImage()+
       "/user_portrait?screenName="+usuario.getScreenName()+
       "&companyId="+usuario.getCompanyId();

 

- Path asociado a las imágenes: themeDisplay.getPathImage().
- Ruta para lanzar peticiones de imágenes: /user_portrait pasando como parámetro el nombre en pantalla del usuario y el companyId.

Código ejemplo

Vamos a incluir todo el código en una página jsp simple, de esa forma se muestra la funcionalidad de una manera rápida y compacta (esta forma de codificación es una mala práctica y no se recomienda su uso):

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="ui"%>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="theme"%>
<portlet:defineObjects />
<theme:defineObjects />
<%
    Map<String, String> info = (Map<String, String>) renderRequest
            .getAttribute(PortletRequest.USER_INFO);
   
    long userId = Long
            .parseLong(info.get("liferay.user.id").toString());

    User usuario = UserLocalServiceUtil.getUser(userId);

    String nombre = usuario.getFullName();
    String titulo = usuario.getJobTitle();
    String ruta = themeDisplay.getPathImage()+
                  "/user_portrait?screenName="+usuario.getScreenName()+
                  "&companyId="+usuario.getCompanyId();   
%>

<div><img src="<%=ruta%>"></img></div>
<div><h1><label>Identificador de usuario: </label><%=userId%></h1></div>
<div><h2><label>Nombre: </label><%=nombre%></h2></div>
<div><h2><label>Titulo: </label><%=titulo%></h2></div>

El resultado para un usuario cualquiera sería algo tal que así:

 

Komentar
URL za praćenje:

comments powered by Disqus