Я довольно новичок в калитке и пытаюсь создать простое дерево калитки, которое содержит информацию о списках рассылки. Этот список рассылки связан с определенным письмом.
- MailingListDto 1
- Пользователь 1
- Пользователь 2
- MailingListDto 2
- Пользователь 3
- Пользователь 4
Если мы редактируем существующее письмо, списки рассылки, связанные с этим письмом, извлекаются into mailingListCollection
, и соответствующие узлы в дереве следует выбирать и расширять. По какой-то причине я, кажется, не получаю эту работу.
Выбранные и расширенные узлы не отображаются как выбранные или развернутые в пользовательском интерфейсе, но если я пройду через выбранные узлы программным путем, например, в onAfterRender()
и зарегистрирую выбранные и расширенные значения, узлы будут развернуты и выбраны.
tree = new TreeTable("treeTable", treeModel, treeColumns) {
@Override
public void onBeforeRender() {
super.onBeforeRender();
if (!mailingListCollection.isEmpty()) {
for (MailingListDto mailingList : mailingListCollection) {
tree.getTreeState().expandNode(mailingList);
tree.getTreeState().selectNode(mailingList, true);
}
}
tree.updateTree();
}
@Override
protected void onAfterRender() {
super.onAfterRender();
if (LOG.isDebugEnabled()) {
LOG.debug("onAfterRender: " + tree.getTreeState().getSelectedNodes().size());
for (Object obj : tree.getTreeState().getSelectedNodes()) {
LOG.debug(tree.getTreeState().isNodeSelected(obj) + " " + tree.getTreeState().isNodeExpanded(obj));
}
}
}
};
tree.setRootLess(true);
tree.getTreeState().setAllowSelectMultiple(true);
add(tree);