Wicket per come è fatto richiede che di base le componenti da aggiungere all'oggetto WEB siano messe nel costruttore. Questo però prevede che se quello che devo stampare deve arrivarmi da chi il componente lo istanzia, necessariamente dovrà passarmelo nel costruttore.
Per ovviare a questo problema la soluzione più semplice è utilizzare il metodo che tutti i componenti web di Wicket possiedono ovvero:
onInizialize();
Andiamo a vedere un esempio:
import org.apache.wicket.markup.html.basic.Label; public class ElencoUPCPanel extends Panel { private static final long serialVersionUID = 1L; private String test; public MioPanel(String id) { super(id); } @Override protected void onInitialize() { super.onInitialize(); costruisciHTML(); } public void costruisciElenco(){ add(new Label("elenco_html",test)); } public void setTest(String test){ this.test = test; } }
In questo modo il nostro costruttore potrà essere semplice e potremmo demandare la costruzione delle componenti WEB ad un metodo che verrà chiamato DOPO che avrò impostato i vari parametri della classe. In questo caso la proprietà TEST.
mioPanel = new MIOPanel("dove_metto_il_panel");
mioPanel.setTest("ciao mondo");
add(mioPanel);
L'ipotetica pagina che istanzia il Pannello potrà quindi personalizzarlo settando parametri e aggiungendolo dopo al suo flusso.
NB: La stringa "dove_metto_il_panel" è l'ID Wicket nel codice HTML della pagina nella quale il pannello verrà agganciato.
NB: La stringa "elenco_html" è invece l'ID Wicket nel codice HTML del pannello nella quale verrà messo il contenuto di TEST.
Nessun commento:
Posta un commento