Eccoci di nuovo qui, con il primo post del 2020 anche se siamo già a marzo...
Oggi vi voglio parlare di qualcosa di piuttosto semplice ma che ha richiesto il solito tempo di indagine nei sorgenti di Liferay per capire se e come era possibile fare quanto richiesto.
A partire dalla versione 7, Liferay consente di graficare le checkbox anche in un modo alternativo molto più accattivamente; in pratica anzichè dichiarare il campo booleano nel seguente solito modo (ipotizzando che male
sia un campo booleano della nostra entità):
<aui:input name="male" />
possiamo definirlo anche così:
<aui:input checked="<%= user.isMale() %>" name="male" type="toggle-switch" />
Questo farà sì che a video, al posto della solita noiosa e bruttina checkbox, sia visualizzato un componente grafico molto più gradevole e moderno.
Il problema di questa soluzione è che il componente grafico visualizza automaticamente l'etichetta SI
oppure NO
a seconda del valore del campo booleano; apparentemente non è possibile modificare queste etichette perchè il DTD della taglib non lo consente.
Tuttavia, spulciando tra i sorgenti del portale, ho scoperto che la taglib supporta i dynamic attributes ossia, in parole povere, consente di specificare attributi non definiti nel DTD; guarda caso, tra i vari attributi, ci sono anche quelli per personalizzare le suddette etichette: labelOff
e labelOn
. Ecco quindi come definire il campo del form:
<aui:input checked="<%= user.isMale() %>" labelOff="female" labelOn="male" name="male" type="toggle-switch" />
Vi lascio come esercizio quello di scoprire a cosa servono gli altri attributi dinamici supportati dalla taglib:
autoComplete
buttonIconOff
buttonIconOn
dayLight
displayStyle
format
iconOff
iconOn
nullable
timeFormat
Enjoy!