玉兰日志中的 AbstractFieldFactory 警告

Posted

技术标签:

【中文标题】玉兰日志中的 AbstractFieldFactory 警告【英文标题】:AbstractFieldFactory warning in magnolia log 【发布时间】:2020-01-23 16:21:07 【问题描述】:

我调用这个ImportCommandAction,它被定义为公共类ImportCommandAction <D extends ActionDefinition> extends AbstractVersionAction<D>,作为页面上的一个动作。自定义导入操作有自己的 VersionName 类并覆盖 getBeanItemClass()。每次我调用这个类时,我都会在日志中得到一个条目

警告 magnolia.ui.form.field.factory.AbstractFieldFactory: BeanItem id versionName 没有任何属性,返回默认值 属性。

我不明白这个警告以及 ui.form.field.factory.AbstractFieldFactory 所指的 id。该类打开一个对话框并列出来自内部 git 存储库的所有版本(提交)。

类代码:

    public ImportCommandAction(
            D definition, AppContext appContext, LocationController locationController,
            UiContext uiContext, FormDialogPresenter formDialogPresenter, 
            AbstractJcrNodeAdapter nodeAdapter, SimpleTranslator i18n, 
            ContentConnector contentConnector)
    
            super(definition, locationController, uiContext, formDialogPresenter, i18n);
            this.nodeAdapter = nodeAdapter;
            this.appContext = appContext;
            this.dialogID = "ui-contentapp:code:ImportCommandAction.selectVersion";
            this.contentConnector = contentConnector;
        

        @Override
        protected Class getBeanItemClass() 
            return VersionName.class;
        

        @Override
        protected FormDialogDefinition buildNewComponentDialog() 
        throws ActionExecutionException, RepositoryException 
        ConfiguredFormDefinition form = new ConfiguredFormDefinition();

        ConfiguredTabDefinition tab = new ConfiguredTabDefinition();
        tab.setName("versions");

        SelectFieldDefinition select = new SelectFieldDefinition();
        select.setName(VersionName.PROPERTY_NAME_VERSION_NAME);
        select.setSortOptions(false);
        tab.addField(select); //more code follows
        

        @Override
        protected Node getNode() throws RepositoryException 
             return nodeAdapter.getJcrItem();
        

        protected String getVersionName() 
            return (String) getItem()
            .getItemProperty(VersionName.PROPERTY_NAME_VERSION_NAME)
            .getValue();
        

        /**
         * Simple POJO used to access user selection from dialog, 
         * see @link com.vaadin.data.util.BeanItem.
         */
        protected class VersionName 

            protected final static String PROPERTY_NAME_VERSION_NAME = "versionName";

            private String versionName;

            public String getVersionName() 
                return versionName;
            

            public void setVersionName(String versionName) 
                this.versionName = versionName;
            
        

    

【问题讨论】:

嗨,安娜,我不太明白这个问题。你能详细说明一下吗? 嗨@Ducaz035。我调用这个 ImportCommandAction,它被定义为public class ImportCommandAction <D extends ActionDefinition> extends AbstractVersionAction<D> 作为页面上的一个操作。自定义导入操作有自己的 VersionName 类并覆盖 getBeanItemClass()。每次我调用这个类时,我都会在日志中得到一个条目 WARN magnolia.ui.form.field.factory.AbstractFieldFactory: BeanItem does not have any property for id versionName, return default property 我没有了解此警告以及 ui.form.field.factory.AbstractFieldFactory 所指的 id。 【参考方案1】:

这意味着注入到 fieldFactory 的项目找不到定义#name 的属性。在您的情况下,defition#name 是 versionName 并且为了不让 fieldFactory 一起失败,它回退到默认值。我会调试哪个字段是导致此行为的原因,然后从那里继续调查。

希望对你有帮助,

干杯

【讨论】:

谢谢@Ducaz035。它出现在private void buildView(FormDialogDefinition dialogDefinition) 中的final String label = dialogDefinition.getLabel(); 行正在生成WARN magnolia.ui.form.field.factory.AbstractFieldFactory: BeanItem doesn't have any property for id versionName, returning default property. 如何找出BeanItem 具有哪些属性以及如何向其中添加此属性?

以上是关于玉兰日志中的 AbstractFieldFactory 警告的主要内容,如果未能解决你的问题,请参考以下文章

谁能说说二乔玉兰,白玉兰和紫玉兰的区别?

玉兰的英文

玉兰@cms.newBar

玉兰花是如何完成请求映射的?

请问这是啥花!在野外发现的,问问花的名字。谢谢!

王玉兰201771010128《面向对象程序设计(java)》第一周学习总结