嵌套 MultiValueFieldDefinition 和 CompositeFieldDefinition 的 SwitchableFieldDefinition 出错

Error with SwitchableFieldDefinition with nesting of MultiValueFieldDefinition and CompositeFieldDefinition

我在部署我的组件的对话框时遇到问题,它属于 class SwitchableFieldDefinition,它有一个包含 MultiValueFieldDefinition 的选项并且它有一个嵌套的 CompositeFieldDefinition:

这是我部署此对话框时的日志错误:

ERROR  info.magnolia.pages.app.editor.PageEditorPresenter 30.03.2016 11:42:31 -- An error occurred while executing action [editElement]
    info.magnolia.ui.api.action.ActionExecutionException: Action execution failed for action: editElement
             at info.magnolia.ui.api.action.AbstractActionExecutor.execute(AbstractActionExecutor.java:64)
             at info.magnolia.pages.app.editor.PageEditorPresenter.onAction(PageEditorPresenter.java:118)
             at info.magnolia.ui.vaadin.editor.PageEditor.editArea(PageEditor.java:100)
             at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
             at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
             at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
             at java.lang.reflect.Method.invoke(Method.java:606)
             at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:168)
             at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118)
             at com.vaadin.server.communication.ServerRpcHandler.handleBurst(ServerRpcHandler.java:214)
             at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:111)
             at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:91)
             at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:37)
             at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1371)
             at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:238)
             at info.magnolia.ui.admincentral.AdmincentralVaadinServlet.service(AdmincentralVaadinServlet.java:136)
             at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
             at info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:148)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
             at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.filters.VirtualUriFilter.doFilter(VirtualUriFilter.java:68)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:58)
             at info.magnolia.module.cache.executor.CompositeExecutor.processCacheRequest(CompositeExecutor.java:66)
             at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:152)
             at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:73)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.filters.RangeSupportFilter.doFilter(RangeSupportFilter.java:84)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:57)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
             at info.magnolia.cms.security.SecurityCallbackFilter.doFilter(SecurityCallbackFilter.java:83)
             at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:94)
             at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.module.templatingkit.filters.SiteMergeFilter.doFilter(SiteMergeFilter.java:112)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.multisite.filters.MultiSiteFilter.doFilter(MultiSiteFilter.java:104)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.filters.MultiChannelFilter.doFilter(MultiChannelFilter.java:83)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:73)
             at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
             at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:127)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:56)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
             at info.magnolia.module.devicedetection.filter.DeviceDetectionFilter.doFilter(DeviceDetectionFilter.java:71)
             at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.personalization.preview.filter.PreviewFilter.doFilter(PreviewFilter.java:92)
             at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
             at info.magnolia.personalization.trait.AbstractTraitDetectorFilter.doFilter(AbstractTraitDetectorFilter.java:61)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.personalization.trait.AbstractTraitDetectorFilter.doFilter(AbstractTraitDetectorFilter.java:61)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:112)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:129)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80)
             at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65)
             at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
             at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:106)
             at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:66)
             at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:107)
             at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:93)
             at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
             at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
             at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
             at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
             at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
             at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
             at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
             at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
             at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
             at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
             at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
             at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
             at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
             at org.eclipse.jetty.server.Server.handle(Server.java:499)
             at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
             at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
             at org.eclipse.jetty.io.AbstractConnection.run(AbstractConnection.java:540)
             at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
             at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:555)
             at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.ClassCastException: info.magnolia.ui.vaadin.integration.NullItem cannot be cast to info.magnolia.ui.vaadin.integration.jcr.JcrNodeAdapter
             at info.magnolia.ui.form.field.transformer.multi.DelegatingMultiValueFieldTransformer.getRootItem(DelegatingMultiValueFieldTransformer.java:194)
             at info.magnolia.ui.form.field.transformer.multi.DelegatingMultiValueFieldTransformer.readFromItem(DelegatingMultiValueFieldTransformer.java:112)
             at info.magnolia.ui.form.field.transformer.multi.DelegatingMultiValueFieldTransformer.readFromItem(DelegatingMultiValueFieldTransformer.java:76)
             at info.magnolia.ui.form.field.transformer.TransformedProperty.<init>(TransformedProperty.java:59)
             at info.magnolia.ui.form.field.factory.AbstractFieldFactory.initializeProperty(AbstractFieldFactory.java:238)
             at info.magnolia.ui.form.field.factory.AbstractFieldFactory.createField(AbstractFieldFactory.java:114)
             at info.magnolia.ui.form.field.AbstractCustomMultiField.createLocalField(AbstractCustomMultiField.java:175)
             at info.magnolia.ui.form.field.SwitchableField.initFields(SwitchableField.java:104)
             at info.magnolia.ui.form.field.SwitchableField.initFields(SwitchableField.java:62)
             at info.magnolia.ui.form.field.AbstractCustomMultiField.initFields(AbstractCustomMultiField.java:140)
             at info.magnolia.ui.form.field.SwitchableField.initContent(SwitchableField.java:93)
             at com.vaadin.ui.CustomField.getContent(CustomField.java:92)
             at com.vaadin.ui.CustomField.attach(CustomField.java:82)
             at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
             at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
             at com.vaadin.ui.AbstractComponent.setParent(AbstractComponent.java:478)
             at com.vaadin.ui.CustomField.getContent(CustomField.java:93)
             at com.vaadin.ui.CustomField.attach(CustomField.java:82)
             at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
             at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
             at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
             at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
             at com.vaadin.ui.AbstractComponent.setParent(AbstractComponent.java:478)
             at com.vaadin.ui.CustomField.getContent(CustomField.java:93)
             at com.vaadin.ui.CustomField.attach(CustomField.java:82)
             at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
             at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
             at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
             at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
             at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
             at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
             at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
             at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
             at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
             at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
             at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
             at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
             at info.magnolia.ui.dialog.BaseDialogViewImpl.attach(BaseDialogViewImpl.java:180)
             at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:583)
             at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:571)
             at com.vaadin.ui.AbstractComponent.setParent(AbstractComponent.java:478)
             at info.magnolia.ui.vaadin.magnoliashell.MagnoliaShell.addOverlay(MagnoliaShell.java:233)
             at info.magnolia.ui.vaadin.magnoliashell.MagnoliaShell.openOverlay(MagnoliaShell.java:203)
             at info.magnolia.ui.framework.shell.ShellImpl.openOverlayOnView(ShellImpl.java:221)
             at info.magnolia.ui.framework.app.SubAppContextImpl.openOverlay(SubAppContextImpl.java:150)
             at info.magnolia.ui.framework.context.AbstractUIContext.openOverlay(AbstractUIContext.java:66)
             at info.magnolia.ui.dialog.formdialog.FormDialogPresenterImpl.start(FormDialogPresenterImpl.java:144)
             at info.magnolia.ui.dialog.formdialog.FormDialogPresenterImpl.start(FormDialogPresenterImpl.java:119)
             at info.magnolia.pages.app.action.EditElementAction.execute(EditElementAction.java:88)
             at info.magnolia.ui.api.action.AbstractActionExecutor.execute(AbstractActionExecutor.java:62)
             ... 118 more

我试过其他 TransformerClass,例如:

DelegatingMultiValueFieldTransformer
DelegatingCompositeFieldTransformer

但我什么也得不到。 请问有什么帮助吗?

您需要将此 "transformerClass" 添加到 SwitchableFieldDefinition 高度。

TransformerClass

希望能解决您的问题。