我需要在选择后立即更新模型或对象 一个DropDownChoice项目。
Bellow是我正在使用的代码:
add(new ListView[Company]("listCompanies", listData) {
override protected def onBeforeRender() {
//
// ...
super.onBeforeRender()
}
def populateItem(item: ListItem[Company]) = {
var company = item.getModelObject()
//...
val listClients: java.util.List[Client] = clientControler.listClients
item.add(new DropDownChoice("clientSelection", listClients,new ChoiceRenderer[Client]("name")))
在包含公司对象属性的列表视图中, 选择DropDownChoice的名称属性后,该模型 公司将在选择客户名称的情况下进行更新。
我怎样才能做到这一点?
由于
答案 0 :(得分:7)
我认为你可以覆盖onSelectionChanged。但是你还需要覆盖wantOnSelectionChangedNotifications以返回true以使其工作。这样的事情。
DropDownChoice<Client> dropDownChoice = new DropDownChoice("clientSelection", listClients) {
@Override
protected boolean wantOnSelectionChangedNotifications() {
return true;
}
@Override
protected void onSelectionChanged(Object newSelection) {
// Do something here when selection is changed
}
};
答案 1 :(得分:7)
您需要添加更新行为:
add(new DropDownChoice<Client>("clientSelection", listClients)
.add(new AjaxFormComponentUpdatingBehavior("onchange") {
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
// update your model here
// then you need to add model to target
target.add();
}
}));
答案 2 :(得分:0)
我认为您可以在DropDownChoice上使用AjaxEventBehavior:
item.add(new DropDownChoice("clientSelection", listClients,new ChoiceRenderer[Client("name")).add(new AjaxEventBehavior("change") {
@Override
protected void onEvent(AjaxRequestTarget target) {
// TODO Auto-generated method stub
}
}))