Использование автозаполнения модели палитры в калитке

Есть ли возможность в калитке сделать так, чтобы палитра работала как автозаполнение?


person Noushin Khaki    schedule 23.11.2011    source источник
comment
Что означает, что палитра действует как автозаполнение?   -  person Don Roby    schedule 23.11.2011
comment
Я использую структуру калитки, и у меня есть модель палитры на моей странице (которая представляет собой поле подкачки, вы можете выбирать элементы из списка в другой список, wicketstuff.org/wicket13/compref/), я хочу, чтобы он заполнялся автоматически , это означает, что когда пользователь вводит a, он предлагает все параметры, начинающиеся с a.   -  person Noushin Khaki    schedule 23.11.2011
comment
когда пользователь вводит где? В текстовом поле, связанном с палитрой? А варианты, начинающиеся с а, появляются слева?   -  person Don Roby    schedule 23.11.2011
comment
На самом деле я имею в виду ввод в левом поле и предложение элементов, начинающихся с там (тот же левый ящик), и, если это невозможно, текстовое поле, связанное с ним, как вы описали.   -  person Noushin Khaki    schedule 23.11.2011
comment
Самый простой способ - это отдельное текстовое поле, в вашем случае AutoCompleteTextfield, которое сделано именно для этого. Затем с помощью Ajax вы можете отправить обновленный список в палитру.   -  person rotsch    schedule 23.11.2011
comment
Спасибо, но я не знаю, как это сделать!   -  person Noushin Khaki    schedule 23.11.2011


Ответы (1)


глупо, да, вы можете это сделать довольно сложно, я сделал это несколько месяцев назад, это не совсем тот же код, но надеюсь, что это поможет:

вам нужна форма для отправки поля, в котором вы ищете, затем измените модели и, наконец, перерисуйте то, что вам нужно

оригинальный класс написан на испанском языке, извините за любую странность: S

 public SearchPallete() {

currentMedics = database action


avaibleMedics = new LoadableDetachableModel<Collection<? extends YourModel>>() {

    private static final long serialVersionUID = 1L;
    private List<YourModel> res;

    @Override
    protected Collection<? extends YourModel> load() {
    res = get from database list of avaibles;



    res.addAll(add current assigned model);

    return res;

    }
};
//form for auto submit with ajax (it could be refactor)
ajaxFormPallet = new AjaxFormSubmitBehavior(palleteForm, "onchange") {

    private static final long serialVersionUID = -4029493502490267181L;

    @Override
    protected void onSubmit(AjaxRequestTarget target) {


    }

    @Override
    protected void onError(AjaxRequestTarget target) {

    }
};

IChoiceRenderer<YourModel> renderer = new ChoiceRenderer<YourModel>(
    "field", "field");
pallete = new Palette<YourModel>("pallete",
    currentMedics, avaibleMedics, renderer, 10, false) {

    private static final long serialVersionUID = 1L;

    protected Recorder<YourModel> newRecorderComponent() {
    Recorder<YourModel> recorder = super
        .newRecorderComponent();
    recorder.add(ajaxFormPallet);
    return recorder;
    }

    @Override
    protected ResourceReference getCSS() {
    return new PackageResourceReference(MedicosTratantesPage.class,
        "theStyle");
    }

};
//for ajax 
pallete.setOutputMarkupId(true);

    //pallete form
palleteForm = new Form<FormMedicosTratantesModel>("palleteForm") {
    private static final long serialVersionUID = 5036201492891006829L;


    @SuppressWarnings("unchecked")
    protected void onSubmit() {
    //search and submit stuff

    }
};

searchField = new TextField<String>("Buscador", thethingToFind);

searchForm = new Form<String>("searchForm") {
    private static final long serialVersionUID = 1L;

    protected void onSubmit() {
    pallete.detachModels();

    }
};
searchForm.add(searchField);

searchField.add(new AjaxFormSubmitBehavior(searchForm, "onkeyup") {
    private static final long serialVersionUID = 7939356732729920901L;

    @Override
    protected void onSubmit(AjaxRequestTarget target) {
    log.debug("searchField cambio");
    target.add(pallete);
    }

    @Override
    protected void onError(AjaxRequestTarget target) {

    }
});
add(palleteForm);
add(searchForm);
palleteForm.add(pallete);

}
person osdamv    schedule 23.11.2011
comment
спасибо, к сожалению, я не понимаю, что вы сделали! Я собираюсь задать новый вопрос о возможности автозаполнения в текстовой области в калитке. - person Noushin Khaki; 24.11.2011