初始化所需的DropDownChoices和null值

时间:2013-08-23 15:05:00

标签: java wicket wicket-1.5

这是我的问题,我有一个必需的DropDownChoices。但是在我的选择列表中,我有一个带有空/空代码的项目,我认为这是一个有效的答案。我可以接受(下面的解决方案),但我不能用正确的值初始化它。

这个想法,我有这个对象:Item { String code; String label}和下一个代码:

List<Item> choices = new ArrayList<Item>();
choices.add(new Item("ok","labelOk"));
choices.add(new Item("","labelEmpty"));
ChoiceRenderer<Item> renderer = new ChoiceRenderer<Item>("label", "code");
DropDownChoice<Item> s = new DropDownChoice<Item>("id", Model.of(new Item("","labelEmpty")), choices, renderer);
s.setRequired(true);

只有这样,第二种选择才被接受。 所以我创建了一个自定义渲染器来将null值替换为none:

public class ItemChoiceRenderer extends ChoiceRenderer<Item> {
    public TListItemChoiceRenderer() {super("label", "code");}

    @Override
    public String getIdValue(Item object, int index) {
        if (object != null && StringUtils.isNullOrEmpty(object.getCode())) {
            return "none";
        }
        return super.getIdValue(object, index);
    }
}

有了这个,我可以选择第二个选择。但DropDownChoices没有初始化正确的值,它在开始时选择“选择一个”。

看起来该组件不使用渲染器来选择它的字段,但我看不清楚原因,以及如何纠正它。

1 个答案:

答案 0 :(得分:0)

没关系,我发现了我的问题,DropDownChoices的模型没有初始化。

我提出问题,因为它显示了我的问题的解决方案,它可能会引起某些人的兴趣。