AbstractFieldFactory предупреждение в журнале магнолии - PullRequest
1 голос
/ 23 января 2020

Я вызываю это ImportCommandAction, которое определяется как publi c class ImportCommandAction <D extends ActionDefinition> extends AbstractVersionAction<D> как действие на странице. Пользовательское действие импорта имеет свой собственный класс VersionName и переопределяет метод getBeanItemClass (). Каждый раз, когда я вызываю этот класс, я получаю в журнале запись

WARN magnolia.ui.form.field.factory.AbstractFieldFactory: BeanItem не имеет никакого свойства для id versionName, возвращая свойство по умолчанию.

Я не понимаю этого предупреждения и к какому идентификатору относится ui.form.field.factory.AbstractFieldFactory. Класс открывает диалоговую форму и перечисляет все версии (коммиты) и внутренний репозиторий 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;
            }
        }

    }

1 Ответ

1 голос
/ 28 января 2020

Это означает, что введенный элемент в fieldFactory не может найти свойство с именем defition #. В вашем случае defition # name является versionName, и оно возвращается к значению по умолчанию, чтобы не допустить сбоев fieldFactory. Я бы отладил, какое поле является причиной такого поведения, и продолжил бы расследование оттуда.

Надеюсь, это поможет,

Приветствия

...