lunedì 24 ottobre 2011

Wicket - Campi form condizionati

Eccomi di ritorno per una velocissima lezione.
Mettiamo che state costruendo una FORM con Wicket mappata su un dato oggetto che chiameremo Bicicletta.

Diciamo che avete un campo input chiamato MARCE che deve essere visibile nella FORM solo se la proprietà TYPE dell'oggetto è settato su MBC.

Quello che NON potete fare è una cosa del genere:

TextField<Integer> marce = new TextField<Integer>('marce');

if (bicicletta.getType() != 'BMC')
    marce.setVisible(false);

Questo codice non funzionerà perché l'oggetto bicicletta all'atto della costruzione della FORM è ovviamente vuoto. Serve solo al Wicket per dare un modello di associazione tra i campi della form e l'oggetto stesso.

Quello che dovete fare è invece questo:

TextField<Integer> marce = new TextField<Integer>('marce'){
   @Override
   public boolean isVisible() {
    return (bicicletta.getType() == 'BMC');
   }
};

Come vediamo sopra abbiamo ridefinito il metodo interno isVisible. Questo metodo deve ritornare ovviamente un booleano. True o False se l'oggetto deve essere visibile o meno. Noi facciamo sopra un return sull'uguaglianza del ritorno del metodo con la stringa. In quel momento l'oggetto Bicicletta avrà il suo dato e quindi ritornerà true o false.