【发布时间】:2018-10-02 11:09:27
【问题描述】:
我们想实现 AutoCompleteTextField 字段,一旦用户从 AutoComplete 结果中选择了该字段,那么系统将自动填充其他文本字段,我使用了组件 AjaxFormComponentUpdatingBehavior (blur),但是这将对每个文本输入生效来自 AutoCompleteTextField 字段,但如果我更改为 AjaxFormComponentUpdatingBehavior(更改),它不起作用。
下面是示例代码:
AutoCompleteTextField<String> field_postcode = new AutoCompleteTextField<String>("field_postcode",
new PropertyModel<String>(getModelObject(), "wAdditionalInfo.postal"), autoCompleteRenderer) {
private static final long serialVersionUID = 1L;
@Override
protected Iterator<String> getChoices(String input) {
if (Strings.isEmpty(input)) {
List<String> emptyList = Collections.emptyList();
return emptyList.iterator();
}
List<String> choices = new ArrayList<String>();
List<Postcode> postcodeList = getProfileManager().findAllPostcodeByPostcode(input);
for (Postcode p : postcodeList) {
String postcode = p.getPostcode();
if (postcode.startsWith(input)) {
choices.add(p.getPostcode());
if (choices.size() == 10) {
break;
}
}
}
return choices.iterator();
}
};
field_postcode.setRequired(true);
field_postcode.add(new AjaxFormComponentUpdatingBehavior("blur"){
private static final long serialVersionUID=-1107858522700306810L;
@Override protected void onUpdate( AjaxRequestTarget target){
Postcode postcode = getProfileManager().findPostcodeByPostcode(field_postcode.getInput());
if (postcode != null) {
City city = postcode.getCity();
State state = city.getState();
field_city.setModelObject(city.getCity());
ddl_state.setModelObject(state);
if (isDisplayTip) {
//isDisplayTip true mean is from widrawal webform
isReadonly = true;
} else {
field_city.setEnabled(false);
}
ddl_state.setEnabled(false);
} else {
if (isDisplayTip) {
isReadonly = false;
} else {
field_city.setEnabled(true);
}
ddl_state.setEnabled(true);
}
target.add(field_city, ddl_state);
}
}
);
是否有任何来自 wicket 的 api 来实现这一点?当用户从自动完成中选择选项时,我们需要有一些东西,然后它只有 AjaxFormComponentUpdatingBehavior 的 onUpdate 方法
【问题讨论】:
标签: wicket