Get it on Google Play

Desarrollo Liferay 7 DXP: Crear configuración del portlet

29-07-2017
 

Con la nueva versión de Liferay y su migración a OSGI(Un gran invento, no me cansaré de decirlo) han cambiado muchas cosas, una de estas cosas es como añadimos a un portlet, que nosotros hemos desarrollado, las opciones de configuración:

Configuración Liferay Portlet

Configuración Liferay Portlet

Para hacer esto, ahora lo haremos creando una classe que extienda de ‘DefaultConfigurationAction’ y anotada como componente, fijaros especialmente en la anotación ‘configurationPid’ y la propiedad ‘javax.portlet.name’:

@Component(
    configurationPid = "com.lostsys.xxx.forms.config.FormsConfig",
    configurationPolicy = ConfigurationPolicy.OPTIONAL,
    immediate = true,
    property = {
        "javax.portlet.name=com_lostsys_xxxx_forms_portlet_FormService"
    },
    service = ConfigurationAction.class
)

public class ConfigurationForm extends DefaultConfigurationAction {
	
	@Override
	public String getJspPath(HttpServletRequest renderRequest) {
		PortletRequest pr=(PortletRequest) renderRequest.getAttribute("javax.portlet.request");
		PortletPreferences prefs=pr.getPreferences();
			
		renderRequest.setAttribute( "key", prefs.getValue("key", "")
 );
			
		return "/config.jsp";
		}
	
	@Override
	public void processAction(PortletConfig portletConfig, ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
		String key=ParamUtil.getString(actionRequest, "key", "");
		
		PortletPreferences prefs=actionRequest.getPreferences();
		prefs.setValue("key", key);
		prefs.store();
		}

}

En esta classe de configuración vemos como procesamos la grabación de un parámetro llamado ‘key’ y sobrescribimos el método ‘getJspPath’ para pintar el JSP que nosotros requerimos. Si estáis habituados a trabajar con portlets es fácil de entender.

Ahora toca configurar a nuestro portlet que debe utilizar es esta classe para gestionar la configuración:

@Component(
	configurationPid = "com.lostsys.xxx.forms.config.FormsConfig",
	immediate = true,
	property = {			
		"com.liferay.portlet.display-category=XXX",
		"com.liferay.portlet.instanceable=true",
		"javax.portlet.display-name=forms-service Portlet",
		"javax.portlet.init-param.template-path=/",
		"javax.portlet.init-param.view-template=/view.jsp",
		"javax.portlet.resource-bundle=content.Language",
		"javax.portlet.security-role-ref=power-user,user",
		"javax.portlet.name=com_lostsys_xxx_forms_portlet_FormService"
	},
	service = Portlet.class
)
public class FormService extends MVCPortlet {

Como he comentado antes aquí lo importante es la anotación ‘configurationPid’ y la propiedad ‘javax.portlet.name’. Que deben coincidir para que todo funcione.

Interesado en formación Liferay?

 

Leave a Reply

© Albert Coronado Calzada