-1

问题是某些页面无法在 Studio 中的其他位置复制和粘贴,我在任何频道中选择一个页面,然后右键单击 -> 复制,然后找到任何其他频道以右键单击 -> 粘贴。我得到一个空指针异常,我注意到标签objectGroupId不在粘贴失败的页面中,带有标签的页面没有问题。有人可以提供关于为什么不包含此标签的线索吗?我的理解是标签是由 Crafter 自动添加的。

// groupIdNode will be Null since there is no objectGroupId node in document
Node groupIdNode = root.selectSingleNode("//" + DmXmlConstants.ELM_GROUP_ID);
if (groupIdNode != null) {
    // originalGroupId will be Null since groupIdNode is Null
    originalGroupId = ((Element)groupIdNode).getText();
    ((Element)groupIdNode).setText(params.get(DmConstants.KEY_PAGE_GROUP_ID));
}

List<Node> keys = root.selectNodes("//key");
if (keys != null) {
    for(Node keyNode : keys) {
        String keyValue = ((Element)keyNode).getText();
        keyValue = keyValue.replaceAll(originalPageId, params.get(DmConstants.KEY_PAGE_ID));

        // This line throws the NullPointerException since originalGroupId is Null
        keyValue = keyValue.replaceAll(originalGroupId, params.get(DmConstants.KEY_PAGE_GROUP_ID));

        if(keyValue.contains("/page")) {
            ((Element)keyNode).setText(keyValue);
        }
    }
}

完整的堆栈跟踪是:

[ERROR] 2018-06-13 15:23:33,147 [ajp-nio-7009-exec-3] [clipboard.ClipboardServiceImpl] | Paste operation failed for item {0} to dest path `{1}, isCut: {2} 
java.lang.NullPointerException
    at java.util.regex.Pattern.<init>(Pattern.java:1350)
    at java.util.regex.Pattern.compile(Pattern.java:1028)
    at java.lang.String.replaceAll(String.java:2223)
    at org.craftercms.studio.impl.v1.service.content.ContentServiceImpl.updateContentForCopy(ContentServiceImpl.java:1062)
    at org.craftercms.studio.impl.v1.service.content.ContentServiceImpl.copyContent(ContentServiceImpl.java:535)
    at org.craftercms.studio.impl.v1.service.content.ContentServiceImpl.copyContent(ContentServiceImpl.java:468)
    at org.craftercms.studio.impl.v1.service.clipboard.ClipboardServiceImpl.pasteItems(ClipboardServiceImpl.java:106)
    at org.craftercms.studio.impl.v1.service.clipboard.ClipboardServiceImpl.paste(ClipboardServiceImpl.java:89)
    at org.craftercms.studio.api.v1.service.clipboard.ClipboardService$paste$1.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:138)
    at scripts.api.impl.clipboard.SpringClipboardServices.paste(SpringClipboardServices.groovy:43)
    at scripts.api.impl.clipboard.SpringClipboardServices$paste$1.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130)
    at scripts.api.ClipboardServices.paste(ClipboardServices.groovy:31)
    at scripts.api.ClipboardServices$paste$3.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:138)
    at paste-item_get.run(paste-item.get.groovy:11)
    at groovy.util.GroovyScriptEngine.run(GroovyScriptEngine.java:589)
    at org.craftercms.engine.scripting.impl.GroovyScript.execute(GroovyScript.java:55)
    at org.craftercms.engine.controller.rest.RestScriptsController.executeScript(RestScriptsController.java:131)
    at org.craftercms.engine.controller.rest.RestScriptsController.handleRequestInternal(RestScriptsController.java:83)
    at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:154)
    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.craftercms.studio.impl.v1.repository.cached.ResponseCacheFilter.doFilter(ResponseCacheFilter.java:44)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.craftercms.studio.impl.v1.web.filter.StudioSecurityFilter.doFilterInternal(StudioSecurityFilter.java:100)
    at org.craftercms.studio.impl.v1.web.filter.StudioSecurityFilter.doFilter(StudioSecurityFilter.java:56)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.craftercms.security.servlet.filters.RequestSecurityFilter$1.processRequest(RequestSecurityFilter.java:193)
    at org.craftercms.security.processors.impl.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:59)
    at org.craftercms.security.processors.impl.UrlAccessRestrictionCheckingProcessor.processRequest(UrlAccessRestrictionCheckingProcessor.java:147)
    at org.craftercms.security.processors.impl.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:59)
    at org.craftercms.security.processors.impl.SecurityExceptionProcessor.processRequest(SecurityExceptionProcessor.java:82)
    at org.craftercms.security.processors.impl.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:59)
    at org.craftercms.security.processors.impl.SavedRequestAwareProcessor.processRequest(SavedRequestAwareProcessor.java:70)
    at org.craftercms.security.processors.impl.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:59)
    at org.craftercms.security.processors.impl.MellonAutoLoginProcessor.processRequest(MellonAutoLoginProcessor.java:108)
    at org.craftercms.security.processors.impl.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:59)
    at org.craftercms.security.processors.impl.RememberMeAutoLoginProcessor.processRequest(RememberMeAutoLoginProcessor.java:38)
    at org.craftercms.security.processors.impl.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:59)
    at org.craftercms.security.processors.impl.LogoutProcessor.processRequest(LogoutProcessor.java:104)
    at org.craftercms.security.processors.impl.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:59)
    at org.craftercms.security.processors.impl.LoginProcessor.processRequest(LoginProcessor.java:168)
    at org.craftercms.security.processors.impl.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:59)
    at org.craftercms.security.processors.impl.ReturnCurrentAuthenticationProcessor.processRequest(ReturnCurrentAuthenticationProcessor.java:59)
    at org.craftercms.security.processors.impl.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:59)
    at org.craftercms.security.processors.impl.CurrentAuthenticationResolvingProcessor.processRequest(CurrentAuthenticationResolvingProcessor.java:86)
    at org.craftercms.security.processors.impl.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:59)
    at org.craftercms.security.processors.impl.AddSecurityCookiesProcessor.processRequest(AddSecurityCookiesProcessor.java:74)
    at org.craftercms.security.processors.impl.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:59)
    at org.craftercms.security.servlet.filters.RequestSecurityFilter.doFilterInternal(RequestSecurityFilter.java:139)
    at org.craftercms.security.servlet.filters.RequestSecurityFilter.doFilter(RequestSecurityFilter.java:110)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.craftercms.engine.servlet.filter.SiteContextResolvingFilter.doFilter(SiteContextResolvingFilter.java:46)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.craftercms.engine.servlet.filter.ExceptionHandlingFilter.doFilter(ExceptionHandlingFilter.java:56)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.craftercms.commons.http.RequestContextBindingFilter.doFilter(RequestContextBindingFilter.java:78)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:478)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1437)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

谢谢你。

4

1 回答 1

0

嗨@Daniel,这对我来说似乎是一个可能的错误。我对此的看法是,对于仍在使用 2.5.x 代码行的 Crafter CMS 的用户,请考虑升级到最新的 2.5.x 版本,或者尽可能升级到 3.x。

如果您在使用最新的补丁版本并且仍然看到此行为,请创建一个 Github 问题单https://github.com/craftercms/craftercms/issues,其中包含有关如何重现错误的非常明确的说明。

于 2018-06-14T15:53:03.397 回答