La tag library JSF contiene una serie di elementi, quali ad esempio selectOneMenu, che lavorano su una serie di item da visualizzare in formato lista o menu' a discesa. Il problema di questi item è che non possono essere generati automaticamente nella pagina stessa, come si può invece fare con un foreach della libreria JSP. Per poter generare una lista di item occorre definire in un backing bean un metodo che ritorni un iterable di tipo SelectItem (quindi ad esempio List oppure SelectItem[]) e associare, tramite il tag speciale selectItems, questo elenco al componente stesso.
Il seguente codice mostra un esempio di generazione di un elenco di mesi:

      public final SelectItem[] getMesi(){
        SelectItem months[] = new SelectItem[ 12 ];


        months[ 0 ]     = new SelectItem( 0, "Gennaio" );
        months[ 1 ]     = new SelectItem( 1, "Febbraio" );
        months[ 2 ]     = new SelectItem( 2, "Marzo" );
        months[ 3 ]     = new SelectItem( 3, "Aprile" );
        months[ 4 ]     = new SelectItem( 4, "Maggio" );
        months[ 5 ]     = new SelectItem( 5, "Giugno" );
        months[ 6 ]     = new SelectItem( 6, "Luglio" );
        months[ 7 ]     = new SelectItem( 7, "Agosto" );
        months[ 8 ]     = new SelectItem( 8, "Settembre" );
        months[ 9 ]     = new SelectItem( 9, "Ottobre" );
        months[ 10 ]     = new SelectItem( 10, "Novembre" );
        months[ 11 ]     = new SelectItem( 11, "Dicembre" );

        return months;

    }

e l'associazione con il relativo componente JSF avviene come segue:

<h:selectOneMenu id="selezioneMese" value="#{bean.mesi }" >
  <f:selectItems value="#{bean.mesi }"/>
</h:selectOneMenu>


Con "bean" che rappresenta il nome (id) del backing bean associato alla applicazione JSF.

The article JSF: popolare un menu' programmaticamente has been posted by Luca Ferrari on January 29, 2011