Il prossimo passo nella costruzione della webapp Prototype è la gestione degli Uffici e l'integrazione con la classe Utente. La struttura delle entità è la stessa proposta nel post Hibernate relazione uno a molti, nel quale si esemplifica la relazione uno a molti tra due tabelle di un database. Nella specifica relazione utenti/uffici ogni utente appartiene ad un solo ufficio, mentre ad ogni ufficio possono appartenere molti utenti.
Per la gestione delle operazioni di inserimento, cancellazione e modifica creo una nuova pagina ufficio.xhtml a cui associo il backing bean ufficiBean. La logica di sviluppo è del tutto simile a quella già descritta per la gestione degli utenti, ma molto più semplice, in quanto l'elaborazione è limitata alla gestione di due campi. Per questo motivo non mi soffermo oltre su questo aspetto, tuttavia chi è interessato può trovare tutto il codice su GitHub.
<h:selectOneMenu id="ufficio" value="#{utenti.seluff}" effect="fold">
<f:selectItems value="#{utenti.ufficio1Value}"/>
</h:selectOneMenu>
<f:selectItems value="#{utenti.ufficio1Value}"/>
</h:selectOneMenu>
Il managed bean utentiBean subisce sostanziali modifiche per la gestione del nuovo campo. Innanzitutto definisco un oggetto Map a cui assegno il nome ufficio1List e nel quale carico i dati da inserire nell'oggetto selectOneMenu. Nel codice seguente riporto il metodo per il caricamento della mappa partendo dall'estrazione della tabella Ufficio:
public Map ufficio1List = new HashMap();
public Map getUfficio1Value() {
int indi=0;
for (Ufficio uff : uffix) {
ufficio1List.put(uff.getNomeUfficio(), Integer.toString(uff.getUfficioId()));
indi = indi + 1;
}
return ufficio1List;
}
public Map
int indi=0;
for (Ufficio uff : uffix) {
ufficio1List.put(uff.getNomeUfficio(), Integer.toString(uff.getUfficioId()));
indi = indi + 1;
}
return ufficio1List;
}
Nei metodi addAction e onEdit, che rispondono rispettivamente agli eventi di caricamento e modifica dei dati degli utenti, definisco il collegamento tra gli oggetti Utente e Ufficio.
Ufficio uff = ufficioDao.getUfficio(Integer.parseInt(seluff));
Nell'entità di appoggio utenteBean, che raggruppa i dati estratti dalle tabelle Utente e DettaglioUtente per il caricamento dell'oggetto datatable, definisco il nuovo campo nomeUff in cui salvo la denominazione dell'ufficio da esporre come output al momento del caricamento.
La WebApp aggiornata è scaricabile da GitHub.
Hai apprezzato questo post? Conferma le mie competenze o scrivi una segnalazione sul mio profilo Linkedin!
Nessun commento:
Posta un commento