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/