martedì 3 luglio 2012

Wicket - Triggerare il feedback Panel di una Pagina indipendentemente dalla profondità

Un titolo lungo per qualcosa di assolutamente semplice ma potente.

Avevo una situazione di questo tipo:

Pagina con dentro un Panel con dentro una Modale con dentro un Panel. Premendo un tasto di SAVE, dovevo chiudere la modale e mostrare nel feedback panel della pagina, un messaggio di avvertimento all'utente che l'operazione era andata a buon fine.

Per farlo serve un metodo getFeedBackPanel() da dare alla Page e che ritorna l'oggetto.
A questo punto usiamo questo codice:

FeedbackPanel feedbackPadre = ((ProtectedPage) findPage()).getFeedBackPanel();
feedbackPadre.info("Scrivo qualcosa");
target.addComponent(feedbackPadre);

Come vediamo, uso findPage() per trovare un oggetto di tipo Page  (o suo figli) a ritroso nella gerarchia indipendentemente dalla profondità. La devo ovviamente castare alla pagina effettiva che mi aspetto (nel mio caso ProtectedPage) e quindi richiamare il nostro FeedbackPanel.

Poi in maniera classica, ci scrivo qualcosa dentro e quindi lo aggancio all'evento Ajax.

Nessun commento:

Posta un commento