Отображение изначально выбранного объекта в ObjectAutoCompleteField при загрузке страницы в Wicket - PullRequest
2 голосов
/ 01 декабря 2010

Я следовал руководству Wicket by Example , чтобы заставить ObjectAutoCompleteField работать, и он делает это очень хорошо.

У меня есть огромная проблема, и это показатьизначально установленный объект в поле при загрузке страницы.Объект извлекается из модели, которую я использую для формы, в которой используется ObjectAutoCompleteField.Изменение ObjectAutoCompleteField изменяет атрибут модели, к которому он «подключен», и любые последующие изменения в поле показывают соответствующую метку на своем месте, но не первоначальную, когда страница загружается - единственное, что показывает, это ссылка редактирования (дляполучить доступ к функциям автозаполнения.)

В документации к ObjectAutoCompleteBuilder я просматривал, но не нашел ни одного соответствующего метода, позволяющего даже явно установить начальное значение при загрузке страницы.

1 Ответ

1 голос
/ 06 декабря 2010

Мне, наконец, удалось найти решение, просматривая классы, относящиеся к ObjectAutoCompleteField.

ObjectAutoCompleteField создается методом построения в ObjectAutoCompleteBuilder. Итак, вызвав метод readOnlyRenderer в компоновщике, создав новый объект ObjectReadOnlyRenderer, создав метку внутри его getObjectRenderer, я получил ObjectAutoCompleteField для визуализации предварительно выбранного объекта при загрузке страницы.

ObjectAutoCompleteBuilder<Author, Long> builder = new ObjectAutoCompleteBuilder<Author, Long>(provider);
builder.readOnlyRenderer(new ObjectReadOnlyRenderer<Long>() {
    public Component getObjectRenderer(String id, IModel<Long> pModel, IModel<String> pSearchTextModel) {
        return new Label(id, new PropertyModel<Author>(model, "author"));
    }
});

Можно подумать, что это было стандартное поведение, но теперь я знаю, для дальнейшего использования.

...