Spesso capita di dover visualizzare in pagina la data di nascita e questo normalmente non è una cosa estremamente difficoltosa se usiamo le taglib di Alloy; tuttavia ci sono alcuni requisiti funzionali da tenere in considerazione per la data di nascita:
- l'anno non può essere futuro
- l'orario non è necessario
Per implementare questi requisiti è sufficiente configurare opportunamente i model hints associati alla nostra entity.
Innanzitutto, ovviamente, all'interno del file service.xml saremo andati a censire la nostra entity dotandola di un campo "nascita" di tipo Date.
Questo fa sì che in pagina, sfruttando le taglib di Alloy e la combinazione di:
- <aui:model-context />
- <aui:input name="nascita" />
venga visualizzato il classico widget di selezione delle date. Tale widget però include l'ora e non rispetta i requisiti visti sopra.
Vediamo quindi come fare.
Come prima cosa apriamo il file portlet-model-hints.xml ed andiamo a censire la collezione di regole che rappresenterà la tipologia data di nascita.
Inseriamo quindi in testa al file il seguente blocco di codice:
<hint-collection name="BIRTHDAY">
<hint name="year-range-delta">90</hint>
<hint name="year-range-future">false</hint>
<hint name="show-time">false</hint>
</hint-collection>
Cosa abbiamo fatto?
Abbiamo semplicemente dichiarato una regola che stabilisce un intervallo di 90 anni a partire dall'anno corrente, senza poter usare gli anni futuri e senza mostra l'orario.
A questo punto, è sufficiente identificare la riga del campo "nascita" ed associare la regola:
<field name="nascita" type="Date">
<hint-collection name="BIRTHDAY" />
</field>
Ora ricarichiamo la JSP e... voilà!
Enjoy!