这是我的问题,我有一个必需的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没有初始化正确的值,它在开始时选择“选择一个”。
看起来该组件不使用渲染器来选择它的字段,但我看不清楚原因,以及如何纠正它。
答案 0 :(得分:0)
没关系,我发现了我的问题,DropDownChoices的模型没有初始化。
我提出问题,因为它显示了我的问题的解决方案,它可能会引起某些人的兴趣。