我将定义为公共类ImportCommandActionImportCommandAction <D extends ActionDefinition> extends AbstractVersionAction<D>作为对Page的操作来调用。定制导入操作具有其自己的VersionName类,并覆盖getBeanItemClass()。每次调用此类时,我都会在日志中输入一个条目


  警告magnolia.ui.form.field.factory.AbstractFieldFactory:BeanItem
  没有ID版本名称的任何属性,返回默认值
  属性。


我不理解此警告以及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;
            }
        }

    }

最佳答案

这意味着注入到fieldFactory的项目无法找到具有defition#name的属性。在您的情况下,defition#name是versionName,并且为了不使fieldFactory一起失败,它会回退到默认值。我将调试哪个字段是造成此问题的原因,然后从那里继续进行调查。

希望能有所帮助,

干杯

10-06 15:08