【问题标题】:Selecting the model attribute to display with a Wicket 7 DropDownChoice选择要使用 Wicket 7 DropDownChoice 显示的模型属性
【发布时间】:2015-09-03 14:56:38
【问题描述】:

使用 Wicket 7,我创建了一个 DropDownChoice 组件,该组件使用从数据库条目派生的模型。

Class Task 包含两个字段,id 和 taskname。查询时,我的数据库接口返回一个任务对象列表。由此,我创建了一个模型类,如下所示:

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;
    }
}

然后我将 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)吗?最终,我希望 Task 对象中的任务名称成为下拉菜单上显示的文本。

【问题讨论】:

  • 注意:我将使用 ALLWAYS type safe public class TaskModel extends LoadableDetachableModel&lt;List&lt;Task&gt;&gt;。我太老了,无法猜测“要返回什么类型”

标签: java wicket


【解决方案1】:

您需要使用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");

【讨论】:

  • 酷,这正是我所需要的。谢谢。对于任何未来的读者,我的 DropDownChoice 变成了...form.add(new DropDownChoice&lt;Task&gt;("taskname", new Model(null), new TaskModel(), new ChoiceRenderer("taskname", "id")));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多