我们有一个基于Wicket的实验室应用程序,&按照此处显示的调色板示例:
最初,我们在可用列表中有描述=“pH”,“pH1”和“pH2”的项目。
如果我们将“pH1”和“pH2”移动到选定列表并保存,“pH”将不再显示在可用列表中。
如果我们将项目的描述从“pH”更改为“PH”,则会再次显示。
以下是代码的一部分:
private List<LabMethod> availableMethods = new ArrayList<LabMethod>();
private List<LabMethod> selectedMethods = new ArrayList<LabMethod>();
....
//Get all the methods
availableMethods = labMethodService.getLabMethods();
//Get the methods for this user
if (user.getId()!=null)
selectedMethods = lookupService.getMethodsForUser(user);
else
selectedMethods = Collections.emptyList();
IChoiceRenderer<LabMethod> renderer = new ChoiceRenderer<LabMethod>("description", "description");
final Palette<LabMethod> palette =
new Palette<LabMethod>("methodPalette",
new ListModel<LabMethod>(selectedMethods),
new CollectionModel<LabMethod>(availableMethods),
renderer, 10, true);
palette.add(new DefaultTheme());
答案 0 :(得分:2)
这似乎是Wicket 7.x中引入的回归 - Palette不支持彼此包含的选项ID:
E.g。当从选择{“AA”,“AAA”和“AAAA”}中选择“AAAA”时,记录器#getUnselectedList()将返回all作为选择(因为所有都“包含”在“AAAA”中)。