首页 文章

通过BroadLeaf管理站点添加了类别,但无法在站点中查看

提问于
浏览
0

使用Broadleaf 5.2.1-GA Edition [许可],请帮助我通过管理站点添加类别 . 站点模块上发生错误 .

Able to add the category via Admin Site, but error has occurred on Site the site module

enter image description here

站点应用程序中发生错误 .

错误原因

2017-12-28 18:45:00.638 ERROR 2804 --- [nio-8443-exec-2] org.thymeleaf.TemplateEngine:[THYMELEAF] [https-jsse-nio-8443-exec-2]异常处理模板“catalog / category”:模板解析期间发生错误(模板:“类路径资源[themes / default-theme / templates / catalog / category.html]”)org.thymeleaf.exceptions.TemplateInputException:模板解析期间发生错误(模板:“类路径资源[themes / default-theme / templates / catalog / category.html]”)org.thymeleaf.templateparser上的org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) . 在org.thymeleaf.TemplateEngine的org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098)的org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666)处的markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) .process(TemplateEngine.java:1072)org.thymeleaf.spring4.view.ThymeleafView.renderFragment( ThymeleafView.java:353)位于org.springframework.web的org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1286)的org.thymeleaf.spring4.view.ThymeleafView.render(ThymeleafView.java:191)位于org.springframework.web上的org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984)的.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041)(DispatcherServlet.vava:901) )org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)at javax.servlet.http.HttpServlet.service( HttpServlet.java:635)位于org.apache.catalina.core的javax.servlet.http.HttpServlet.service(HttpServlet.java:742)的org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) .applicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)org.apache.catalina.core.Ap plicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.broadleafcommerce.common.web com.broadleafcommerce.advancedoffer.site.web.filter.OfferCodeResolutionFilter.doFilterInternalUnlessIgnored(OfferCodeResolutionFilter.java:63) .filter.AbstractIgnorableOncePerRequestFilter.doFilterInternal(AbstractIgnorableOncePerRequestFilter.java:58)org.apringframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) )org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.broadleafcommerce.common.web.filter.TranslationFilter.doFilterUnlessIgnored(Transl ationFilter.java:53)org.broadleafcommerce.common.web.filter.AbstractIgnorableFilter.doFilter(AbstractIgnorableFilter.java:60)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache .catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.broadleafcommerce.core.web.geolocation.GeolocationFilter.doFilterInternalUnlessIgnored(GeolocationFilter.java:48)at org.broadleafcommerce.common.web.filter.AbstractIgnorableOncePerRequestFilter.doFilterInternal (AbstractIgnorableOncePerRequestFilter.java:58)位于org.apache的org.apache.catal.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) . catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)位于org.broadle的org.broadleafcommerce.cms.web.URLHandlerFilter.doFilterInternalUnlessIgnored(URLHandlerFilter.java:101) afcommerce.common.web.filter.AbstractIgnorableOncePerRequestFilter.doFilterInternal(AbstractIgnorableOncePerRequestFilter.java:58)at atorg.apringframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:166)org.broadleafcommerce.core.web.order.security.CartStateFilter.doFilterInternalUnlessIgnored(CartStateFilter.java:91)at org.broadleafcommerce.common.web.filter.AbstractIgnorableOncePerRequestFilter.doFilterInternal(AbstractIgnorableOncePerRequestFilter.java:58)在org.apache.catalina.core的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)的com.broadleafcommerce.enterprise.workflow.site.web.PreviewCartStateFilter.doFilterInternal(PreviewCartStateFilter.java:58) .applicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)位于com.broadleafcommerce.pricelist的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) .web.PriceListRequestFilter.doFilterInternalUnlessIgnored(PriceListRequestFilter.java:59)在org.broadleafcommerce.common.web.filter.AbstractIgnorableOncePerRequestFilter.doFilterInternal(AbstractIgnorableOncePerRequestFilter.java:58)在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java :107)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)atg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at com.broadleafcommerce.account.site . web.AccountRequestFilter.doFilterInternalUnlessIgnored(AccountRequestFilter.java:63)org.broadleafcommerce.common.web.filter.AbstractIgnorableOncePerRequestFilter.doFilterInternal(AbstractIgnorableOncePerRequestFilter.java:58)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java: 107)在org.apach的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) e.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)位于org.broadleafcommerce.common.web.filter的org.broadleafcommerce.profile.web.site.security.CustomerStateFilter.doFilterInternalUnlessIgnored(CustomerStateFilter.java:60) . 在org.apringframework.wef.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)org上的AbstractIgnorableOncePerRequestFilter.doFilterInternal(AbstractIgnorableOncePerRequestFilter.java:58)位于org.springframework.web.filter.OncePerRequestFilter.doFilter的org.broadleafcommerce.core.web.device.BroadleafDeviceResolverRequestFilter.doFilterInternal(BroadleafDeviceResolverRequestFilter.java:67)中的.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) (OncePerRequestFilter.java:107)在org.apache.cata的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) lina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.broadleafcommerce.common.web.BroadleafRequestFilter.doFilterInternalUnlessIgnored(BroadleafRequestFilter.java:110)at org.broadleafcommerce.common.web.filter.AbstractIgnorableOncePerRequestFilter.doFilterInternal(AbstractIgnorableOncePerRequestFilter . :org.apache . .ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.apringframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:59)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) )org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.springframework.security.web.FilterChainProxy $ VirtualF在org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter的org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)上的ilterChain.doFilter(FilterChainProxy.java:317) FilterSecurityInterceptor.java:91)atg.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)at atorg.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)位于org.springframework.security.web的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331) . session.essionManagementFilter.doFilter(SessionManagementFilter.java:137)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)at org.broadleafcommerce.profile.web.site.security.SessionFixationProtectionFilter.doFilter( SessionFixationProtectionFilter.java:105)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)at org .springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)在org.springframework.security.web.servletapi.SecurityContextHolderAwareRequest在org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java)的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)上的Filter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) 63)在org.springframework.security的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)位于org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter的.gb.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.broadleafcommerce.common.security.handler.SecurityFilter.doFilter(SecurityFilter.java:107) (FilterChainProxy.java:331)org.springframework.security.web.Fi上的org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) lterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java: 107)在org.springframework.security的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) .gb.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)位于org.springframework.web.filter.OncePerRequestFilter的org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) .doFilter(OncePerRequestFilter.java:107)在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)在org.springframework.securit y.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:157)位于org.springframework.security.web.FilterChainProxy的org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331) . org.springframework上的org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)中的doFilterInternal(FilterChainProxy.java:214)org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)的.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java) :166)在org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)在org.apache.catalina.core .applicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105)at at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:107)维持在org.broadleafcommerce.common在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193))位于org.bringleafcommerce.common.web.filter.AbstractIgnorableOncePerRequestFilter.doFilterInternal(AbstractIgnorableOncePerRequestFilter.java:58)的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java)中的.web.BroadleafRequestFilter.doFilterInternalUnlessIgnored(BroadleafRequestFilter.java:110) :107)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.d oFilter(ApplicationFilterChain.java:166)org.broadleafcommerce.site.common.web.filter.EstablishSessionFilter.doFilterUnlessIgnored(EstablishSessionFilter.java:45)org.broadleafcommerce.common.web.filter.AbstractIgnorableFilter.doFilter(AbstractIgnorableFilter.java: 60)在在org.broadleafcommerce.common.web.BroadleafRequestFilter在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193))在org.broadleafcommerce.common.web.filter.AbstractIgnorableOncePerRequestFilter.doFilterInternal(AbstractIgnorableOncePerRequestFilter.java:58)在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107).doFilterInternalUnlessIgnored(BroadleafRequestFilter.java:82)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)org.apache.catalina.core.ApplicationFilterChain.doFilter(Applicati onFilterChain.java:166)org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:178)atg.broadleafcommerce.common.web.filter.IgnorableOpenEntityManagerInViewFilter.doFilterInternal(IgnorableOpenEntityManagerInViewFilter.java:54)at org .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain)的.java:166)在org.broadleafcommerce.common.web.filter.SecurityBasedIgnoreFilter.doFilter(SecurityBasedIgnoreFilter.java:77)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)在org.apache . catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)at or or g.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:166)在org.apache.catalina的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)的org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) .core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) )在org.apache.catalina.core.StandardContextValve .__在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java)在org.apache.catalina.authenticator.AuthenticatorBase.invok调用(StandardContextValve.java:96) e(AuthenticatorBase.java:478)位于org.apache的org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)在org.apache.coyote.http11.Http11Processor.service(Http11Processor.java :799)在Org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:868)org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor . doRun(NioEndpoint.java:1455)位于java.util.concurrent的java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)的org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) . 在org.apache.tomcat.util.threads.TaskThread上的ThreadPoolExecutor $ Worker.run(未知来源)java.lang.Thread.run上的$ WrappingRunnable.run(TaskThread.java:61)(未知来源)引起:org.attoparser .ParseException:评估SpringEL表达式的异常:“#seo.getCategoryTitlePattern()”(模板:“catalog / category” - 第4行,第16行)org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393)org.attoparser .MarkupParser.parse(MarkupParser.java:257)at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplatePars er.java:230)...省略了169个常用框架引起:org.thymeleaf.exceptions.TemplateProcessingException:评估SpringEL表达式的异常:“#seo.getCategoryTitlePattern()”(模板:“catalog / category” - 第4行,col 16)org.thymeleaf.spring4.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:290)atg.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(VariableExpression.java:165)org.thymeleaf.standard.expression.SimpleExpression org.thymeleaf.standard.expression.Expression.execute(Expression.java:109)中的.executeSimple(SimpleExpression.java:66)位于org的org.thymeleaf.standard.expression.Expression.execute(Expression.java:138) . 位于org.thymeleaf.standard.expression.StandardExpressionPars的org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:120)中的thymeleaf.standard.expression.StandardExpressionPreprocessor.preprocess(StandardExpressionPreprocessor.java:91) org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:44)的er.parseExpression(StandardExpressionParser.java:62)位于org.thymeleaf.standard.processor.StandardUtextTagProcessor.doProcess(StandardUtextTagProcessor.java:71)org位于org.thymeleaf.util.ProcessorConfigurationUtils $ ElementTagProcessorWrapper.process(ProcessorConfigurationUtils)的org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95)中的.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) .java:633)org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314)org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205)atg.thymeleaf.engine.Model.process( Model.java:282)org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1587)org.thymeleaf.engine.OpenElementTag.beHandled( OpenElementTag.java:205)org.thymeleaf.engine.Model.process(Model.java:282)org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1587)atg.thymeleaf.engine.OpenElementTag.beHandled (OpenElementTag.java:205)org.thymeleaf.engine.Model.process(Model.java:282)org.thymeleaf.engine.Model.process(Model.java:290)atg.thymeleaf.engine.GatheringModelProcessable . atg.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleCloseElementEnd(TemplateHandlerAdapterMarkupHandler.java:388)org.thymeleaf.templateparser.markup上的org.thymeleaf.engine.ProcessorTemplateHandler.handleCloseElement(ProcessorTemplateHandler.java:1640)处理(GatheringModelProcessable.java:78) .InlinedOutputExpressionMarkupHandler $ InlineMarkupAdapterPreProcessorHandler.handleCloseElementEnd(InlinedOutputExpressionMarkupHandler.java:322)at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleCloseElementEnd(OutputExpressionInlinePreProce) ssorHandler.java:220)在org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleCloseElementEnd(InlinedOutputExpressionMarkupHandler.java:164)在org.attoparser.HtmlElement.handleCloseElementEnd(HtmlElement.java:169)在org.attoparser.HtmlMarkupHandler.handleCloseElementEnd(HtmlMarkupHandler .java:412)在org.attoparser.MarkupEventProcessorHandler.handleCloseElementEnd(MarkupEventProcessorHandler.java:473)atorg.attoparser.ParsingElementMarkupUtil.parseCloseElement(ParsingElementMarkupUtil.java:201)org.attoparser.MarkupParser.parseBuffer(MarkupParser.java:725)atg.attoparser.MarkupParser.parseDocument(MarkupParser.java:301)... 171个常见框架省略:org.springframework.expression.spel.SpelEvaluationException:EL1004E:方法调用:在org.broadleafcommerce.core.web.expression.SeoVariableExpression类型org.springframework.expression.spel.ast上找不到方法getCategoryTitlePattern() . Org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:125)中的MethodReference.findAccessorForMethod(MethodReference.java:211)org.springframework.expression.spel.ast.MethodReference.access $ 000(MethodReference.java) :49)atg.springframework.expression.spel.ast.MethodReference $ MethodValueRef.getValue(MethodReference.java:347)org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:88)at org . 小号位于org.thymeleaf.spring4.expression.SPELVariableExpressionEvaluator的org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:324)中的pringframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:120) . evaluate(SPELVariableExpressionEvaluator.java:263)...省略了205个常用帧

1 回答

  • 0

    看起来bug就是变量表达式方法 #seo.getCategoryTitlePattern() 不再存在 . 如果你看 SeoVariableExpression ,正确的方法是使用 #seo.getMetaProperties(category).get('title') . 更好的选择是在通用 seoMetaProperties.html 模板中执行类似的操作,以呈现页面的任何元属性:

    <th:block th:each="metaProperty : ${metaProperties}" th:with="key=${metaProperty.key}, value=${metaProperty.value}">
        <th:block th:if="${value != null}">
            <title th:if="${key == 'title'} and ${#strings.contains(value,'#seoElement')}" th:utext="${__${value}__}"></title>
            <title th:if="${key == 'title'} and not ${#strings.contains(value,'#seoElement')}" th:utext="${value}"></title>
    
            <link th:if="${key == 'canonicalUrl'}" rel="canonical" th:attr="href=${value}"/>
    
            <meta th:if="${key == 'metaDescription'} and ${#strings.contains(value,'#seoElement')}" name="description" th:attr="content=${__${value}__}"/>
            <meta th:if="${key == 'metaDescription'} and not ${#strings.contains(value,'#seoElement')}" name="description" th:attr="content=${value}"/>
    
            <th:block th:if="${#strings.startsWith(key, 'og:')}">
                <meta th:if="${#strings.contains(value,'#seoElement')}" th:attr="property=${key}, content=${__${value}__}"/>
                <meta th:unless="${#strings.contains(value,'#seoElement')}" th:attr="property=${key}, content=${value}"/>
            </th:block>
    
            <th:block th:if="${#strings.startsWith(key, 'twitter:')}">
                <meta th:if="${#strings.contains(value,'#seoElement')}" th:attr="name=${key}, content=${__${value}__}"/>
                <meta th:unless="${#strings.contains(value,'#seoElement')}" th:attr="name=${key}, content=${value}"/>
            </th:block>
        </th:block>
    </th:block>
    

    这可以包含在 category.html 文件中,如下所示:

    <th:block th:include="seo/partials/seoMetaProperties" th:with="metaProperties=${#seo.getMetaProperties(category)}" />
    

相关问题