Magnolia CMS - 自定义SelectFieldDefinition - 页面上的所有可用组件

时间:2016-04-08 12:07:20

标签: java magnolia

我正在尝试扩展MagnoliaCMS的默认SelectFieldDefinition,以便为此字段添加动态选项。 我想要插入的选项是当前页面的所有内容节点的UUID。

但我的问题是我无法获得当前的上下文(页面)。

public class ComponentSelectFieldDefinition extends SelectFieldDefinition {

private static final Logger LOGGER = LoggerFactory.getLogger(ComponentSelectFieldDefinition.class);

public ComponentSelectFieldDefinition() throws RepositoryException {
    super();

    try {
        Session session = MgnlContext.getJCRSession(RepositoryConstants.WEBSITE);
        Iterable<Node> nodes = NodeUtil.collectAllChildren(session.getRootNode());

    } catch (RepositoryException e) {
        LOGGER.warn(e.getMessage());
    }
}

实际上我能够获得根节点,我可以迭代所有子节点并将它们添加到SelectField,但我只想列出用户正在编辑的当前页面的子节点。

摘要:是否可以在我的类的构造函数中获取当前节点路径?

2 个答案:

答案 0 :(得分:0)

我认为通过Field是不可能的,但如果您延长public SwitchableField(com.vaadin.data.Item relatedItem){ // you can do your manipulations of the given relatedItem here } 课程,则可能会得到它;

:test

我希望有所帮助,

干杯

答案 1 :(得分:0)

如上所述,通过定义不可能,如果你想选择,你也不想扩展SwitchableField。您需要扩展SelectFieldFactory,或者如果您只想编写脚本,请查看here resp here,了解如何动态设置选项。

HTH,