Lecciones

Utiliza llamadas Ajax en portlets de Liferay (v6.2)

Escrito por Antonio Marcos Dragone | 6 de enero de 2017

Cuando se desea utilizar llamadas Ajax en los portlets será necesario configurar ciertos parámetros para facilitar la recuperación de los datos enviados desde la página original así como tambien utilizar los métodos prestablecidos del framework MVC que proporciona Liferay.

Configurar el portlet

Los portlets son elementos que se pueden embeber en cualquier página y hasta es posible colocar un portlet repetidas veces en una misma página. Es por esto que Liferay establece un ámbito para cada portlet de forma tal que pueda ser individualizado al ejecutar funciones sobre sus elementos (campos, formularios, botones).

Obedeciendo a esto, cada vez que Liferay genera un elemento dentro de un portlet, se generan identificadores únicos asociando el nombre del ámbito al nombre o identificador del elemento, por ejemplo, si definiéramos un input tipo texto en un archivo JSP, obtendríamos como resultado el código que se muestra a continuación:

En este caso vemos como se agrega un prefijo "_holamundo_WAR_Holamundoportlet_" tanto al nombre como al identificador del campo (generado automáticamente). Este prefijo se compondrá del nombre del portlet (en este caso "holamundo") y un índice en el caso de tener varios portlets en la página.

Estos prefijos deberán tenerse en cuenta cuando se recuperan los campos durante una llamada AJAX ya que para el ejemplo, la variable a recuperar no será "nombre" sino "_holamundo_WAR_Holamundoportlet_nombre". Es posible modificar este comportamiento si se configura el portlet consecuentemente.

 Omitir prefijos de ámbito en las variables

Es necesario modificar el archivo liferay-portlet.xml incluyendo los siguientes parámetros dentro del bloque <portlet />:

<requires-namespaced-parameters>false</requires-namespaced-parameters><ajaxable>true</ajaxable>

Lo guardamos y podremos acceder a las variables directamente por su nombre, lo que para el ejemplo anterior sería "nombre".

Referencias:

LUIS PEÑARRUBIA