java - 在 Wicket 口中使用调色板模型的自动完成功能

标签 java autocomplete wicket

Wicket 口是否有可能使调色板充当自动完成功能?

最佳答案

愚蠢,是的,你可以,这很困难,我几个月前就做到了,它没有完全相同的代码,但希望有所帮助:

您需要一个表单来提交您要搜索的字段,然后修改模型,最后重新绘制您需要的内容

原始类是用西类牙语编写的,对于任何奇怪的事情表示抱歉: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);

}

关于java - 在 Wicket 口中使用调色板模型的自动完成功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8241940/

相关文章:

Java从 map 列表中删除元素

java - 钻石广场执行不当

angular - 点击时 Material 自动完成不显示列表

wicket - Apache Wicket 可书签 url 向链接添加了一个附加参数,为什么?

javascript - IE 8 和 IE o 上的面板不刷新

Java 数组列表 : Merging ArrayLists within ArrayLists to create one ArrayList

java - JDBC 查询中的分页

php - Google Chrome 自动填充不提供记住登录信息

asp.net - 自动完成 = "off"在 IE 中被忽略?

java - 在 Spring+Wicket 中上传文件