Magnolia CMS - 在 class SelectFieldDefinition 的内容应用程序中呈现时如何更改值?

Magnolia CMS - How can i change the value when i render in a content app of the class SelectFieldDefinition?

我有一个事件内容应用程序,当我创建一个新事件时,我有一个属于 class SelectFieldDefinition 的字段。 在我的字段定义中,有多项选择的节点 "options",我有 属性 "value",我在其中输入了我的选项字段的值

field definition

当我显示在内容应用程序中选择的选项时出现问题,因为它显示选项 "value" 而不是 属性 "label",而且它非常难看(在 apps/events/subApps/browser/workbench/contentViews/tree/columns)

[选项值显示 属性 "label"][2]

[选择的选项显示 属性 "value"][3]

我阅读了文档,发现了一个名为 "valueProperty" 的 属性,但它不起作用

我也读过这个 https://documentation.magnolia-cms.com/display/DOCS/Transforming+field+values

我找不到这个问题

problem

您需要编写自己的格式化程序 class,请参阅 https://documentation.magnolia-cms.com/display/DOCS/Column+definition - 转换器 classes 用于将对话框中的 Vaadin 项目转换为 JCR 形式(反之亦然)。

现在我可以进入格式化程序 class 但我不知道如何更改标签的值

    if (NodeUtil.isNodeType(node, EventsNodetypes.Events.NAME)) {
            // if the node has been mark as deleted, most of its properties - e.g. lastName, firstName - has been removed
            if(node.hasProperty("jcrCountry") ){
                node.getName();
                return PropertyUtil.getString(node, "jcrCountry", " ");


            }else{
                return node.getName();
            }
        }

只有我可以呈现 jcrName 属性 的相同 属性,这是我在创建事件

时在对话框中的第一个 属性

这是完整的class:

public class EventsNameColumnFormatter extends AbstractColumnFormatter<AbstractColumnDefinition> {

    private static final Logger log = LoggerFactory.getLogger(AbstractColumnDefinition.class);


    public EventsNameColumnFormatter(AbstractColumnDefinition definition) {
        super(definition);
    }

    @Override
    public Object generateCell(Table source, Object itemId, Object columnId) {
        final Item jcrItem = getJcrItem(source, itemId);
        if (jcrItem != null && jcrItem.isNode()) {
            Node node = (Node) jcrItem;

            try {
                if (NodeUtil.isNodeType(node, NodeTypes.Folder.NAME)) {
                    return node.getName();
                }
            } catch (RepositoryException e) {
                log.warn("Unable to get name of folder for column", e);
            }

            try {
                if (NodeUtil.isNodeType(node, EventsNodetypes.Events.NAME)) {
                    // if the node has been mark as deleted, most of its properties - e.g. lastName, firstName - has been removed
                    if(node.hasProperty("jcrCountry") ){
                        node.getName();
                        return PropertyUtil.getString(node, "jcrCountry", " ");


                    }else{
                        return node.getName();
                    }
                }
            } catch (RepositoryException e) {
                log.warn("Unable to get name of contact for column", e);
            }
        }
        return "";
    }
}