Сначала я хочу сказать, что видел сайт:https://cwiki.apache.org/WICKET/autocomplete-using-a-wicket-model.html
Тем не менее у меня есть некоторые проблемы с реализацией.
Context У меня есть форма, где хотите редактировать заказ из моей базы данных.Я хочу автозаполнить имя клиента в форме и сохранить его в базе данных.
Задача Я вижу предложения по именам клиентов и могу выбрать, какое имя клиента я буду использовать.Просто когда я отправляю форму, новый клиент не будет сохранен в порядке, в базе данных.Я не знаю, как связать модель формы с AutoCompleteTextField.
Есть идеи?
Псевдокод моих классов:
Order{
Long id;
String date;
Client client;
Status status;
...
}
Client{
Long id;
String name;
String nip;
String address;
String postcode;
String city;
String phone;
String mail;
...
}
Status{
Long id;
String name;
String value;
}
Отредактировано: Да, вы правы.
Моя реализация AbstractAutoCompleteTextField с сайта:
AbstractAutoCompleteRenderer autoCompleteRenderer = new AbstractAutoCompleteRenderer() {
protected final String getTextValue(final Object object) {
Client client = (Client) object;
return client.getName();
}
protected final void renderChoice(final Object object, final Response response, final String criteria) {
response.write(getTextValue(object));
}
};
// textfield
AbstractAutoCompleteTextField<Client> name = new AbstractAutoCompleteTextField<Client>("name", new PropertyModel(order, "client"), autoCompleteRenderer) {
protected final List<Client> getChoiceList(final String input) {
return clientService.findByNames(10, 0, input);
}
protected final String getChoiceValue(final Client choice) throws Throwable {
return choice.getId().toString();
}
};
form.add(name);
Моя реализация формы, которую вы запросили:
form = new Form("orderForm", new CompoundPropertyModel(order)) {
@Override
public void onSubmit() {
orderService.update((Order) getDefaultModelObject());
setResponsePage(OrdersPage.class);
// Form validation successful. Display message showing edited
// model.
}
};
С этим кодом я получил: "«Hurtownia Techniczna« ADA »не является надлежащим клиентом».(перевод с польского) в панели обратной связи.