选择要使用 Wicket 7 DropDownChoice 显示的模型属性
Selecting the model attribute to display with a Wicket 7 DropDownChoice
我使用 Wicket 7 创建了一个 DropDownChoice 组件,该组件使用从数据库条目派生的模型。
Class Task 包含两个字段,id 和taskname。查询时,我的数据库接口 returns 一个任务对象列表。由此,我创建了一个模型 class 如下:
public class TaskModel extends LoadableDetachableModel{
@Override
protected Object load() {
try{
TaskCriteria taskCriteria = new TaskCriteria();
taskCriteria.listTask();
return Arrays.asList(Task.listTaskByCriteria(taskCriteria));
} catch (PersistentException pe){
pe.printStackTrace();
}
return null;
}
}
然后我子classed Panel 以在后面的页面中使用,并附上 DropDownChoice。
public class TaskDropDownPanel extends Panel{
public TaskDropDownPanel(String id) {
super(id);
Form form = new Form("form");
form.add(new DropDownChoice<Task>("tasks", new Model(null), new TaskModel()));
add(form);
}
}
大多数一切似乎都有效,但我从 DropDownChoice 获得的输出没有显示我想要的字段。在这种情况下,它只打印 1、2、3、4,我认为这是数据库中任务的 ID,尽管我不确定。
<select wicket:id="tasks" name="tasks">
<option selected="selected" value="">Choose One</option>
<option value="0">1</option>
<option value="1">2</option>
<option value="2">3</option>
<option value="3">4</option>
</select>
是否有我应该与 DropDownChoice 一起使用的不同派生模型(例如 PropertyModel)?最后,我希望任务对象中的任务名称是下拉菜单中显示的文本。
您需要使用 IChoiceRenderer
。将渲染器传递给您的 DropDownChoice
。查看 Wicket 指南中第 11.4 节的底部。 https://ci.apache.org/projects/wicket/guide/7.x/guide/modelsforms.html#modelsforms_4
像这样:
ChoiceRenderer taskRenderer = new ChoiceRenderer("taskname", "id");
我使用 Wicket 7 创建了一个 DropDownChoice 组件,该组件使用从数据库条目派生的模型。
Class Task 包含两个字段,id 和taskname。查询时,我的数据库接口 returns 一个任务对象列表。由此,我创建了一个模型 class 如下:
public class TaskModel extends LoadableDetachableModel{
@Override
protected Object load() {
try{
TaskCriteria taskCriteria = new TaskCriteria();
taskCriteria.listTask();
return Arrays.asList(Task.listTaskByCriteria(taskCriteria));
} catch (PersistentException pe){
pe.printStackTrace();
}
return null;
}
}
然后我子classed Panel 以在后面的页面中使用,并附上 DropDownChoice。
public class TaskDropDownPanel extends Panel{
public TaskDropDownPanel(String id) {
super(id);
Form form = new Form("form");
form.add(new DropDownChoice<Task>("tasks", new Model(null), new TaskModel()));
add(form);
}
}
大多数一切似乎都有效,但我从 DropDownChoice 获得的输出没有显示我想要的字段。在这种情况下,它只打印 1、2、3、4,我认为这是数据库中任务的 ID,尽管我不确定。
<select wicket:id="tasks" name="tasks">
<option selected="selected" value="">Choose One</option>
<option value="0">1</option>
<option value="1">2</option>
<option value="2">3</option>
<option value="3">4</option>
</select>
是否有我应该与 DropDownChoice 一起使用的不同派生模型(例如 PropertyModel)?最后,我希望任务对象中的任务名称是下拉菜单中显示的文本。
您需要使用 IChoiceRenderer
。将渲染器传递给您的 DropDownChoice
。查看 Wicket 指南中第 11.4 节的底部。 https://ci.apache.org/projects/wicket/guide/7.x/guide/modelsforms.html#modelsforms_4
像这样:
ChoiceRenderer taskRenderer = new ChoiceRenderer("taskname", "id");