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í: