Java tutorial
package com.asptt.plongee.resa.wicket.page.secretariat; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxSubmitButton; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.Model; import org.apache.wicket.util.string.Strings; import org.wicketstuff.objectautocomplete.AutoCompletionChoicesProvider; import org.wicketstuff.objectautocomplete.ObjectAutoCompleteBuilder; import org.wicketstuff.objectautocomplete.ObjectAutoCompleteField; import org.wicketstuff.objectautocomplete.ObjectAutoCompleteRenderer; import com.asptt.plongee.resa.model.Adherent; import com.asptt.plongee.resa.model.AdherentDataProvider; import com.asptt.plongee.resa.wicket.ResaSession; import com.asptt.plongee.resa.wicket.page.TemplatePage; import com.asptt.plongee.resa.wicket.page.inscription.InscriptionPlongeePage; public class InscriptionAdherentPlongeePage extends TemplatePage { private List<Adherent> list; public InscriptionAdherentPlongeePage() { super(); add(new AdherentForm("form")); } public List<Adherent> getMatchingAdherents(String search) { if (Strings.isEmpty(search)) { List<Adherent> emptyList = Collections.emptyList(); return emptyList; } if (list == null) { list = ResaSession.get().getAdherentService().rechercherAdherentsActifs(); } ArrayList<Adherent> newList = new ArrayList<Adherent>(); for (int i = 0; i < list.size(); i++) { if (list.get(i).getNom().startsWith(search.toUpperCase())) { newList.add(list.get(i)); } } return newList; } class AdherentForm extends Form { private static final long serialVersionUID = 5529259540931669786L; ObjectAutoCompleteField<Adherent, String> autocompleteField; public AdherentForm(String id) { super(id); AutoCompletionChoicesProvider<Adherent> provider = new AutoCompletionChoicesProvider<Adherent>() { private static final long serialVersionUID = 1L; public Iterator<Adherent> getChoices(String input) { return getMatchingAdherents(input).iterator(); } }; ObjectAutoCompleteRenderer<Adherent> renderer = new ObjectAutoCompleteRenderer<Adherent>() { private static final long serialVersionUID = 1L; protected String getIdValue(Adherent adherent) { return adherent.getNumeroLicense(); } protected String getTextValue(Adherent adherent) { String texteAffiche = adherent.getNom() + " " + adherent.getPrenom() + " " + (adherent.getPrerogative()); return texteAffiche; } }; ObjectAutoCompleteBuilder<Adherent, String> builder = new ObjectAutoCompleteBuilder<Adherent, String>( provider); builder.autoCompleteRenderer(renderer); builder.searchLinkText("Autre recherche"); builder.width(200); autocompleteField = builder.build("numeroLicense", new Model<String>()); final TextField<String> adherent = autocompleteField.getSearchTextField(); adherent.setRequired(true); add(autocompleteField); add(new IndicatingAjaxSubmitButton("valider", this) { @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { setResponsePage(new InscriptionPlongeePage(ResaSession.get().getAdherentService() .rechercherAdherentParIdentifiant(autocompleteField.getConvertedInput()))); } }); } } }