« Nazad

Campos personalizados en Liferay 6: Trabajando con campos personalizados

Introducción

El uso de campos personalizados en Liferay Portal es una práctica muy habitual. Si no conoces cómo manejar este concepto a nivel de usuario, puedes consultar la presentación asociada al siguiente enlace. Generalmente, mediante el panel de control vamos a añadir campos personalizados a las entidades, pero, una vez creados, ¿cómo podemos manejar esta información programáticamente?
Esta información se maneja programáticamente mediante el método getExpandoBridge(). Se encuentra, por defecto, en el modelo de cualquier entidad generada mediante el Service Builder en Liferay, por ejemplo, la entidad Factura:

public ExpandoBridge getExpandoBridge() {

if (_expandoBridge == null) {
_expandoBridge = ExpandoBridgeFactoryUtil.getExpandoBridge(0,
Factura.class.getName(), getPrimaryKey());
}

return _expandoBridge;

}

La interface ExpandoBridge

La interface ExpandoBridge actúa como puente entre cualquier entidad de Liferay y sus campos personalizados. Proporciona métodos para añadir y recuperar campos personalizados.

Acceso a los valores de los campos personalizados:

<%

Enumeration<String> e = user.getExpandoBridge().getAttributeNames();
while(e.hasMoreElements()){

 

String nombreAtributo = e.nextElement();
<%=nombreAtributo %>:
<%=user.getExpandoBridge().getAttribute(nombreAtributo).toString() %>

<%}%>

Etiquetas JSP

Los campos personalizados pueden ser manejados a través de etiquetas JSP, son las siguientes:

  • liferay-ui:custom-attribute-list.
  • liferay-ui:custom-attribute.
  • liferay-ui:custom-attributes-available.

Etiqueta liferay-ui:custom-attribute-list

Muestra la lista de campos personalizados asociada a una entidad. Sus atributos más importantes son:

  • className: nombre de la clase asociada a la entidad.
  • classPK: identificador único del objeto sobre el que se trabaja.
  • editable: booleano que indica si el campo puede editarse.
  • label: booleando que indica si el campo lleva asociado un label.

<liferay-ui:custom-attribute-list classPK="<%= (user != null) ? user.getUserId() : 0 %>"
className="<%=User.class.getName() %>" label="<%=true %>" editable="<%=true %>">

</liferay-ui:custom-attribute-list>

Etiqueta liferay-ui:custom-attribute

Muestra un único campo personalizado. Sus atributos son idénticos a la etiqueta anterior más un campo con el nombre del atributo:

  • name: nombre del atributo a mostrar.
  • className: nombre de la clase asociada a la entidad.
  • classPK: identificador único del objeto sobre el que se trabaja.
  • editable: booleano que indica si el campo puede editarse.
  • label: booleando que indica si el campo lleva asociado un label.

<liferay-ui:custom-attribute name="anos-de-experiencia"

classPK="<%= (user != null) ? user.getUserId() : 0 %>"
className="<%=User.class.getName() %>" label="<%=true %>" editable="<%=true %>">

</liferay-ui:custom-attribute>

Etiqueta liferay-ui:custom-attributes-available

Esta etiqueta indica si hay campos personalizados sobre una entidad. Su único atributo es:

  • className: nombre de la clase asociada a esa entidad.

<liferay-ui:custom-attributes-available className="<%= IGFolder.class.getName() %>">

<liferay-ui:custom-attribute-list
className="<%= IGFolder.class.getName() %>"
classPK="<%= (folder != null) ? folder.getFolderId() : 0 %>"
editable="<%= false %>"
label="<%= true %>"
/>

</liferay-ui:custom-attributes-available>

Conclusión

El uso de campos personalizados nos permitirá mejorar la flexibilidad de nuestros portales, podremos adaptar nuestros modelos de datos a las necesidades del cliente sin necesidad de realizar grandes esfuerzo.

Komentar
URL za praćenje:

comments powered by Disqus