Una delle funzionalità fornite dal portale è quella di consentire la definizione di un file di properties all'interno di un plugin custom.
Vediamo quindi come fare per definire il file e leggerne i valori, all'interno di Liferay 6.2.
La procedura è piuttosto semplice; come prima cosa va definito il file WEB-INF/src/portlet.properties
al cui interno andremo a definire le property necessarie:
my.integer.property=100 my.string.property=Hello my.array.property=1,5,10
Dopodichè va creata l'interfaccia PortletPropsKeys
al cui interno definiremo le costanti che rappresentano i nomi delle varie property:
public interface PortletPropsKeys { public static final String MY_INTEGER_PROPERTY = "my.integer.property"; public static final String MY_STRING_PROPERTY = "my.string.property"; public static final String MY_LONG_ARRAY_PROPERTY = "my.array.property"; }
Infine va creata la classe PortletPropsValues
che ha lo scopo di fornire l'accesso alle property:
public class PortletPropsValues { public static final int MY_INTEGER_PROPERTY = GetterUtil.getInteger(PortletProps.get(PortletPropsKeys.MY_INTEGER_PROPERTY)); public static final String MY_STRING_PROPERTY = PortletProps.get(PortletPropsKeys.MY_STRING_PROPERTY); public static final long[] MY_LONG_ARRAY_PROPERTY = GetterUtil.getLongValues(PortletProps.getArray(PortletPropsKeys.MY_LONG_ARRAY_PROPERTY)); }
L'accesso alle property viene consentito dalla classe di portale PortletProps
e dall'utilizzo della classe GetterUtil
per convertire i valori stringa in quello che serve.
A questo punto è possibile utilizzare le property in qualsiasi punto del codice, direttamente attraverso la classe PortletPropsValues
:
if(PortletPropsValues.MY_INTEGER_PROPERTY > 50) { ... } if(PortletPropsValues.MY_STRING_PROPERTY.equals("Hello")) { ... } for(long value: PortletPropsValues.MY_LONG_ARRAY_PROPERTY) { ... }