Wicket 调色板可用列表问题

Wicket palette Available list issue

我们有一个基于 Wicket 的实验室应用程序,并遵循此处显示的调色板示例:

Palette example

最初,可用列表中的项目描述为 "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());

这似乎是 Wicket 中引入的回归 7.x - Palette 不支持选项 ID 相互包含:

例如当从选项 {"AA"、"AAA" 和 "AAAA"} 中选择 "AAAA" 时,Recorder#getUnselectedList() 将 return 全部选中(因为都是 'contained' 在 "AAAA").