jueves, 13 de septiembre de 2012

Creación de un portlet básico para Liferay

Este tutorial va orientado a hacer una introducción básica de la creación de un portlet para Liferay totalmente independiente de otros proyectos.

El proyecto realizado de ejemplo se encuentra como fichero adjunto:  ejemplo.zip
Creación del proyecto en Eclipse

Crearemos un proyecto tipo "Maven Project":



Buscaremos los arquetipos de maven para liferay y seleccionaremos liferay-portlet-archetype

 Estructura del proyecto

Esta es la estructura mínima que debe tener un proyecto de un portlet para Liferay:



La organización será la siguiente:

    Clases java. Irán dentro del paquete src/main/java
    Resources. Si existieran resources deberían estar en src/main/resources
    XHTMLs. Irán dentro de src/main/webapp
    Fichero de contexto  y de configuración para Liferay. Irán dentro de src/main/webapp/WEB-INF

Configuración del proyecto en Eclipse

Hay varias cosas que comprobar después de generar el proyecto de eclipse.

La primera es "Deployment Assembly" donde deberíamos tener 3 source como en la imagen:




La siguiente cosa que debemos comprobar es "Java Build Path" donde debemos tener la librería de JRE de desarrollo que esté instalada en nuestro equipo y la Maven Dependencies:


En "Project Facets" debemos modificar varios checks :


Dynamic Web Module. Versión 2.5

Java. Version 6.0

JavaScript. Versión 1.0

JavaServer Faces. Versión 2.0

Todos los demás checks deben estar sin chequear.

Y por último, dentro de Project Facets - Java Server Faces debemos seleccionar el tipo "Disable Library Configuration":

Dependencias Maven

Dependencias maven necesarias para el proyecto del portlet:

    Spring mvc:    spring-webmvc-portlet    spring-beans    spring-web    spring-tx    jstl    portlet-api   
    Dependencias liferay:    portal-service    util-java    util-bridges   
    Dependencias portlets:    portlet-api   
     Dependencias JSF 2 en Liferay:    portletfaces-bridge   
    Dependencias JSF 2 y PrimeFaces:    primefaces    jsf-api    jsf-impl    jboss-el 
    Dependencias temas PrimeFaces -->    redmond

Se ha subido como ejemplo un pom.xml, un.classpath y un .project del ejemplo generado.
Configuración de contexto y de ficheros del portlet liferay

El fichero de contexto en principio será muy pequeño, debido a que utilizaremos anotaciones para definir los controladores.

Si miramos el applicationContext.xml veremos que solo declaramos la configuración para poder utilizar las anotaciones de spring.

Para definir un portlet de liferay hay que modificar los siguiente ficheros:

    portlet.xml. Declaramos el nombre del portlet de cara a Liferay y definimos la clase del portlet y los xhtml que utiliza.
    liferay-portlet.xml.  Se instancia el portlet que hemos creado en portlet.xml
    liferay-display.xml. Se define en qué categoría mostraremos nuestro portlet en el menú de portlets de Liferay
    faces-config.xml. Debe existir para evitar errores de Liferay pero no hace falta definir nada en este fichero.

Clase MiController.java

Esta clase será nuestro controlador. Tiene implementar la interfaz Serializable y debe tener las siguientes anotaciones:

@ManagedBean(name = "miController")

@SessionScoped

Asi definiremos que nuestra clase es un controlador que será llamado "miController" desde los xhtml.
Ficheros de vista .XHTML

Los ficheros con los que hemos realizado los ejemplos utilizan la etiqueta "ui:composition" y la forma de acceder a los atributos del controlador es bastante sencilla, por ejemplo:

Genera una caja de texto que usará el atributo nombre de miController.

No hay comentarios: