<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>Liferay 7.2 - use freemarker variables in layouttpl</title>
  <link rel="self" href="https://uat.liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=121396019" />
  <subtitle>Liferay 7.2 - use freemarker variables in layouttpl</subtitle>
  <id>https://uat.liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=121396019</id>
  <updated>2026-10-15T11:16:38Z</updated>
  <dc:date>2026-10-15T11:16:38Z</dc:date>
  <entry>
    <title>RE: Liferay 7.2 - use freemarker variables in layouttpl</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=121401140" />
    <author>
      <name>Mounir Hallab</name>
    </author>
    <id>https://uat.liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=121401140</id>
    <updated>2022-04-19T04:29:28Z</updated>
    <published>2022-04-19T04:29:27Z</published>
    <summary type="html">&lt;p&gt;Any idea on this ? Thanks,&lt;/p&gt;</summary>
    <dc:creator>Mounir Hallab</dc:creator>
    <dc:date>2022-04-19T04:29:27Z</dc:date>
  </entry>
  <entry>
    <title>Liferay 7.2 - use freemarker variables in layouttpl</title>
    <link rel="alternate" href="https://uat.liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=121396018" />
    <author>
      <name>Mounir Hallab</name>
    </author>
    <id>https://uat.liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=121396018</id>
    <updated>2022-04-10T23:11:28Z</updated>
    <published>2022-04-10T23:11:27Z</published>
    <summary type="html">&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I'm trying to use a freemarker variable inside a custom layout
  template. Below an example of using &lt;strong&gt;layout&lt;/strong&gt; variable.&lt;/p&gt;
&lt;pre&gt;
&lt;code class="language-html"&gt;&amp;lt;div class=&amp;quot;columns-1&amp;quot; id=&amp;quot;main-content&amp;quot; role=&amp;quot;main&amp;quot;&amp;gt;
    &amp;lt;div class=&amp;quot;portlet-layout row&amp;quot;&amp;gt;

       &amp;lt;div class=&amp;quot;col-md-6&amp;quot; id=&amp;quot;column-1&amp;quot;&amp;gt;
            &amp;lt;h1&amp;gt;${layout.getName(locale)}&amp;lt;/h1&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class=&amp;quot;portlet-column portlet-column-only col-md-6&amp;quot; id=&amp;quot;column-1&amp;quot;&amp;gt;
            ${processor.processColumn(&amp;quot;column-1&amp;quot;, &amp;quot;portlet-column-content portlet-column-content-only&amp;quot;)}
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When I deploy this template inside a module (war file), I get below
  error at deployment. That problem happens with any freemarker variable usage.&lt;/p&gt;
&lt;p&gt;Even so, module is active and I see my layout when configuring a
  page. But, when I select it to apply it on that page, I get
    a &lt;em&gt;Caused by: java.lang.ArrayIndexOutOfBoundsException: -1&lt;/em&gt; exception.&lt;/p&gt;
&lt;p&gt;
  &lt;em&gt;2022-04-10 23:04:32.632 ERROR [Refresh Thread: Equinox Container:
    b4110e7e-3c9b-46c9-951d-eb4ff8a955b9][runtime:59] Error executing
    FreeMarker template&lt;br /&gt; FreeMarker template error:&lt;br /&gt; The
    following has evaluated to null or missing:&lt;br /&gt; ==&amp;gt; layout  [in
    template &amp;quot;null_CUSTOM_my-layout&amp;quot; at line 5, column 15]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;em&gt;----&lt;br /&gt; Tip: If the failing expression is known to legally
    refer to something that's sometimes null or missing, either specify
    a default value like myOptionalVar!myDefault, or use &amp;lt;#if
    myOptionalVar??&amp;gt;when-present&amp;lt;#else&amp;gt;when-missing&amp;lt;/#if&amp;gt;.
    (These only cover the last step of the expression; to cover the
    whole expression, use parenthesis: (myOptionalVar.foo)!myDefault,
    (myOptionalVar.foo)??&lt;br /&gt; ----&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;em&gt;----&lt;br /&gt; FTL stack trace (&amp;quot;~&amp;quot; means
    nesting-related):&lt;br /&gt;     - Failed at: ${layout.getName(locale)}
     [in template &amp;quot;null_CUSTOM_my-layout&amp;quot; at line 5, column
    13]&lt;br /&gt; ----&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;em&gt;Java stack trace (for programmers):&lt;br /&gt; ----&lt;br /&gt;
    freemarker.core.InvalidReferenceException: [... Exception message
    was already printed; see it above ...]&lt;br /&gt;     at
    freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134)&lt;br /&gt;
        at
    freemarker.core.UnexpectedTypeException.newDescriptionBuilder(UnexpectedTypeException.java:85)&lt;br /&gt;
        at
    freemarker.core.UnexpectedTypeException.&amp;lt;init&amp;gt;(UnexpectedTypeException.java:48)&lt;br /&gt;
        at
    freemarker.core.NonHashException.&amp;lt;init&amp;gt;(NonHashException.java:49)&lt;br /&gt;
        at freemarker.core.Dot._eval(Dot.java:48)&lt;br /&gt;     at
    freemarker.core.Expression.eval(Expression.java:101)&lt;br /&gt;     at
    freemarker.core.MethodCall._eval(MethodCall.java:55)&lt;br /&gt;     at
    freemarker.core.Expression.eval(Expression.java:101)&lt;br /&gt;     at
    freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:100)&lt;br /&gt;
        at
    freemarker.core.DollarVariable.accept(DollarVariable.java:63)&lt;br /&gt;
        at freemarker.core.Environment.visit(Environment.java:331)&lt;br /&gt;
        at freemarker.core.Environment.visit(Environment.java:337)&lt;br /&gt;
        at
    freemarker.core.Environment.process(Environment.java:310)&lt;br /&gt;   
     at freemarker.template.Template.process(Template.java:383)&lt;br /&gt;   
     at
    com.liferay.portal.template.freemarker.internal.FreeMarkerTemplate.processTemplate(FreeMarkerTemplate.java:154)&lt;br /&gt;
        at
    com.liferay.portal.template.BaseTemplate.processTemplate(BaseTemplate.java:135)&lt;br /&gt;
        at
    com.liferay.portal.service.impl.LayoutTemplateLocalServiceImpl._getColumns(LayoutTemplateLocalServiceImpl.java:519)&lt;br /&gt;
        at
    com.liferay.portal.service.impl.LayoutTemplateLocalServiceImpl.readLayoutTemplate(LayoutTemplateLocalServiceImpl.java:391)&lt;br /&gt;
        at
    com.liferay.portal.service.impl.LayoutTemplateLocalServiceImpl._readLayoutTemplates(LayoutTemplateLocalServiceImpl.java:598)&lt;br /&gt;
        at
    com.liferay.portal.service.impl.LayoutTemplateLocalServiceImpl.init(LayoutTemplateLocalServiceImpl.java:262)&lt;br /&gt;
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
    Method)&lt;br /&gt;     at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)&lt;br /&gt;
        at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br /&gt;
        at java.lang.reflect.Method.invoke(Method.java:498)&lt;br /&gt;     at
    com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:50)&lt;br /&gt;
        at
    com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49)&lt;br /&gt;
        at com.sun.proxy.$Proxy137.init(Unknown Source)&lt;br /&gt;     at
    com.liferay.portal.kernel.service.LayoutTemplateLocalServiceUtil.init(LayoutTemplateLocalServiceUtil.java:92)&lt;br /&gt;
        at
    com.liferay.portal.deploy.hot.LayoutTemplateHotDeployListener.doInvokeDeploy(LayoutTemplateHotDeployListener.java:94)&lt;br /&gt;
        at
    com.liferay.portal.deploy.hot.LayoutTemplateHotDeployListener.invokeDeploy(LayoutTemplateHotDeployListener.java:46)&lt;br /&gt;
        at
    com.liferay.portal.deploy.hot.HotDeployImpl.doFireDeployEvent(HotDeployImpl.java:226)&lt;br /&gt;
        at
    com.liferay.portal.deploy.hot.HotDeployImpl.fireDeployEvent(HotDeployImpl.java:96)&lt;br /&gt;
        at
    com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:27)&lt;br /&gt;
        at
    com.liferay.portal.kernel.servlet.PluginContextListener.fireDeployEvent(PluginContextListener.java:189)&lt;br /&gt;
        at
    com.liferay.portal.kernel.servlet.PluginContextListener.doPortalInit(PluginContextListener.java:179)&lt;br /&gt;
        at
    com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:44)&lt;br /&gt;
        at
    com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:75)&lt;br /&gt;
        at
    com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:57)&lt;br /&gt;
        at
    com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:55)&lt;br /&gt;
        at
    com.liferay.portal.kernel.servlet.PluginContextListener.contextInitialized(PluginContextListener.java:141)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.adapter.ServletContextListenerExceptionAdapter._initializeContext(ServletContextListenerExceptionAdapter.java:119)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.adapter.ServletContextListenerExceptionAdapter.contextInitialized(ServletContextListenerExceptionAdapter.java:99)&lt;br /&gt;
        at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown
    Source)&lt;br /&gt;     at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br /&gt;
        at java.lang.reflect.Method.invoke(Method.java:498)&lt;br /&gt;     at
    org.eclipse.equinox.http.servlet.internal.registration.ListenerRegistration$EventListenerInvocationHandler.invoke(ListenerRegistration.java:143)&lt;br /&gt;
        at com.sun.proxy.$Proxy493.contextInitialized(Unknown
    Source)&lt;br /&gt;     at
    org.eclipse.equinox.http.servlet.internal.context.ContextController.doAddListenerRegistration(ContextController.java:350)&lt;br /&gt;
        at
    org.eclipse.equinox.http.servlet.internal.context.ContextController.addListenerRegistration(ContextController.java:303)&lt;br /&gt;
        at
    org.eclipse.equinox.http.servlet.internal.customizer.ContextListenerTrackerCustomizer.addingService(ContextListenerTrackerCustomizer.java:71)&lt;br /&gt;
        at
    org.eclipse.equinox.http.servlet.internal.customizer.ContextListenerTrackerCustomizer.addingService(ContextListenerTrackerCustomizer.java:1)&lt;br /&gt;
        at
    org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:943)&lt;br /&gt;
        at
    org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)&lt;br /&gt;
        at
    org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)&lt;br /&gt;
        at
    org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)&lt;br /&gt;
        at
    org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:903)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:891)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:804)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:228)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:469)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:487)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:1004)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WabBundleProcessor.initListeners(WabBundleProcessor.java:625)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WabBundleProcessor.init(WabBundleProcessor.java:231)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WebBundleDeployer._initWabBundle(WebBundleDeployer.java:159)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WebBundleDeployer.doStart(WebBundleDeployer.java:88)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WabFactory$WABExtension.start(WabFactory.java:113)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WabFactory.addingBundle(WabFactory.java:66)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WabFactory.addingBundle(WabFactory.java:48)&lt;br /&gt;
        at
    org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:475)&lt;br /&gt;
        at
    org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:1)&lt;br /&gt;
        at
    org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)&lt;br /&gt;
        at
    org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)&lt;br /&gt;
        at
    org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908)&lt;br /&gt;
        at
    org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)&lt;br /&gt;
        at
    org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:230)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:137)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:129)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:191)&lt;br /&gt;
        at
    org.eclipse.osgi.container.Module.publishEvent(Module.java:476)&lt;br /&gt;
        at
    org.eclipse.osgi.container.Module.doStart(Module.java:578)&lt;br /&gt;   
     at org.eclipse.osgi.container.Module.start(Module.java:449)&lt;br /&gt;
        at
    org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:468)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:777)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:768)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:538)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:484)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:1028)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1409)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1)&lt;br /&gt;
        at
    org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)&lt;br /&gt;
        at
    org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)&lt;br /&gt;
    2022-04-10 23:04:32.636 ERROR [Refresh Thread: Equinox Container:
    b4110e7e-3c9b-46c9-951d-eb4ff8a955b9][LayoutTemplateLocalServiceImpl:524]
    Unable to get layout template columns&lt;br /&gt;
    com.liferay.portal.kernel.template.TemplateException: Unable to
    process template null_CUSTOM_my-layout&lt;br /&gt;     at
    com.liferay.portal.template.BaseTemplate.processTemplate(BaseTemplate.java:140)&lt;br /&gt;
        at
    com.liferay.portal.service.impl.LayoutTemplateLocalServiceImpl._getColumns(LayoutTemplateLocalServiceImpl.java:519)&lt;br /&gt;
        at
    com.liferay.portal.service.impl.LayoutTemplateLocalServiceImpl.readLayoutTemplate(LayoutTemplateLocalServiceImpl.java:391)&lt;br /&gt;
        at
    com.liferay.portal.service.impl.LayoutTemplateLocalServiceImpl._readLayoutTemplates(LayoutTemplateLocalServiceImpl.java:598)&lt;br /&gt;
        at
    com.liferay.portal.service.impl.LayoutTemplateLocalServiceImpl.init(LayoutTemplateLocalServiceImpl.java:262)&lt;br /&gt;
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
    Method)&lt;br /&gt;     at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)&lt;br /&gt;
        at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br /&gt;
        at java.lang.reflect.Method.invoke(Method.java:498)&lt;br /&gt;     at
    com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:50)&lt;br /&gt;
        at
    com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49)&lt;br /&gt;
        at com.sun.proxy.$Proxy137.init(Unknown Source)&lt;br /&gt;     at
    com.liferay.portal.kernel.service.LayoutTemplateLocalServiceUtil.init(LayoutTemplateLocalServiceUtil.java:92)&lt;br /&gt;
        at
    com.liferay.portal.deploy.hot.LayoutTemplateHotDeployListener.doInvokeDeploy(LayoutTemplateHotDeployListener.java:94)&lt;br /&gt;
        at
    com.liferay.portal.deploy.hot.LayoutTemplateHotDeployListener.invokeDeploy(LayoutTemplateHotDeployListener.java:46)&lt;br /&gt;
        at
    com.liferay.portal.deploy.hot.HotDeployImpl.doFireDeployEvent(HotDeployImpl.java:226)&lt;br /&gt;
        at
    com.liferay.portal.deploy.hot.HotDeployImpl.fireDeployEvent(HotDeployImpl.java:96)&lt;br /&gt;
        at
    com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:27)&lt;br /&gt;
        at
    com.liferay.portal.kernel.servlet.PluginContextListener.fireDeployEvent(PluginContextListener.java:189)&lt;br /&gt;
        at
    com.liferay.portal.kernel.servlet.PluginContextListener.doPortalInit(PluginContextListener.java:179)&lt;br /&gt;
        at
    com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:44)&lt;br /&gt;
        at
    com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:75)&lt;br /&gt;
        at
    com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:57)&lt;br /&gt;
        at
    com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:55)&lt;br /&gt;
        at
    com.liferay.portal.kernel.servlet.PluginContextListener.contextInitialized(PluginContextListener.java:141)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.adapter.ServletContextListenerExceptionAdapter._initializeContext(ServletContextListenerExceptionAdapter.java:119)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.adapter.ServletContextListenerExceptionAdapter.contextInitialized(ServletContextListenerExceptionAdapter.java:99)&lt;br /&gt;
        at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown
    Source)&lt;br /&gt;     at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br /&gt;
        at java.lang.reflect.Method.invoke(Method.java:498)&lt;br /&gt;     at
    org.eclipse.equinox.http.servlet.internal.registration.ListenerRegistration$EventListenerInvocationHandler.invoke(ListenerRegistration.java:143)&lt;br /&gt;
        at com.sun.proxy.$Proxy493.contextInitialized(Unknown
    Source)&lt;br /&gt;     at
    org.eclipse.equinox.http.servlet.internal.context.ContextController.doAddListenerRegistration(ContextController.java:350)&lt;br /&gt;
        at
    org.eclipse.equinox.http.servlet.internal.context.ContextController.addListenerRegistration(ContextController.java:303)&lt;br /&gt;
        at
    org.eclipse.equinox.http.servlet.internal.customizer.ContextListenerTrackerCustomizer.addingService(ContextListenerTrackerCustomizer.java:71)&lt;br /&gt;
        at
    org.eclipse.equinox.http.servlet.internal.customizer.ContextListenerTrackerCustomizer.addingService(ContextListenerTrackerCustomizer.java:1)&lt;br /&gt;
        at
    org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:943)&lt;br /&gt;
        at
    org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)&lt;br /&gt;
        at
    org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)&lt;br /&gt;
        at
    org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)&lt;br /&gt;
        at
    org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:903)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:891)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:804)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:228)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:469)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:487)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:1004)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WabBundleProcessor.initListeners(WabBundleProcessor.java:625)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WabBundleProcessor.init(WabBundleProcessor.java:231)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WebBundleDeployer._initWabBundle(WebBundleDeployer.java:159)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WebBundleDeployer.doStart(WebBundleDeployer.java:88)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WabFactory$WABExtension.start(WabFactory.java:113)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WabFactory.addingBundle(WabFactory.java:66)&lt;br /&gt;
        at
    com.liferay.portal.osgi.web.wab.extender.internal.WabFactory.addingBundle(WabFactory.java:48)&lt;br /&gt;
        at
    org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:475)&lt;br /&gt;
        at
    org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:1)&lt;br /&gt;
        at
    org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)&lt;br /&gt;
        at
    org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)&lt;br /&gt;
        at
    org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908)&lt;br /&gt;
        at
    org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)&lt;br /&gt;
        at
    org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:230)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:137)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:129)&lt;br /&gt;
        at
    org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:191)&lt;br /&gt;
        at
    org.eclipse.osgi.container.Module.publishEvent(Module.java:476)&lt;br /&gt;
        at
    org.eclipse.osgi.container.Module.doStart(Module.java:578)&lt;br /&gt;   
     at org.eclipse.osgi.container.Module.start(Module.java:449)&lt;br /&gt;
        at
    org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:468)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:777)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:768)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:538)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:484)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:1028)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1409)&lt;br /&gt;
        at
    org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1)&lt;br /&gt;
        at
    org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)&lt;br /&gt;
        at
    org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)&lt;br /&gt;
    Caused by: freemarker.core.InvalidReferenceException: The following
    has evaluated to null or missing:_==&amp;gt; layout  [in template
    &amp;quot;null_CUSTOM_my-layout&amp;quot; at line 5, column 15]__----_Tip:
    If the failing expression is known to legally refer to something
    that's sometimes null or missing, either specify a default value
    like myOptionalVar!myDefault, or use &amp;lt;#if
    myOptionalVar??&amp;gt;when-present&amp;lt;#else&amp;gt;when-missing&amp;lt;/#if&amp;gt;.
    (These only cover the last step of the expression; to cover the
    whole expression, use parenthesis: (myOptionalVar.foo)!myDefault,
    (myOptionalVar.foo)??_----__----_FTL stack trace (&amp;quot;~&amp;quot;
    means nesting-related):_    - Failed at: ${layout.getName(locale)}
     [in template &amp;quot;null_CUSTOM_my-layout&amp;quot; at line 5, column
    13]_---- [Sanitized]&lt;br /&gt;     at
    freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134)&lt;br /&gt;
        at
    freemarker.core.UnexpectedTypeException.newDescriptionBuilder(UnexpectedTypeException.java:85)&lt;br /&gt;
        at
    freemarker.core.UnexpectedTypeException.&amp;lt;init&amp;gt;(UnexpectedTypeException.java:48)&lt;br /&gt;
        at
    freemarker.core.NonHashException.&amp;lt;init&amp;gt;(NonHashException.java:49)&lt;br /&gt;
        at freemarker.core.Dot._eval(Dot.java:48)&lt;br /&gt;     at
    freemarker.core.Expression.eval(Expression.java:101)&lt;br /&gt;     at
    freemarker.core.MethodCall._eval(MethodCall.java:55)&lt;br /&gt;     at
    freemarker.core.Expression.eval(Expression.java:101)&lt;br /&gt;     at
    freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:100)&lt;br /&gt;
        at
    freemarker.core.DollarVariable.accept(DollarVariable.java:63)&lt;br /&gt;
        at freemarker.core.Environment.visit(Environment.java:331)&lt;br /&gt;
        at freemarker.core.Environment.visit(Environment.java:337)&lt;br /&gt;
        at
    freemarker.core.Environment.process(Environment.java:310)&lt;br /&gt;   
     at freemarker.template.Template.process(Template.java:383)&lt;br /&gt;   
     at
    com.liferay.portal.template.freemarker.internal.FreeMarkerTemplate.processTemplate(FreeMarkerTemplate.java:154)&lt;br /&gt;
        at
    com.liferay.portal.template.BaseTemplate.processTemplate(BaseTemplate.java:135)&lt;br /&gt;
        ... 80 more&lt;br /&gt; 2022-04-10 23:04:32.678 INFO  [Refresh Thread:
    Equinox Container:
    b4110e7e-3c9b-46c9-951d-eb4ff8a955b9][LayoutTemplateHotDeployListener:110]
    36 layout templates for custom-layouts are available for use&lt;br /&gt;
    2022-04-10 23:04:32.745 INFO  [Refresh Thread: Equinox Container:
    b4110e7e-3c9b-46c9-951d-eb4ff8a955b9][BundleStartStopLogger:46]
    STARTED custom-layouts_1.0.0 [1142]&lt;/em&gt;
  &lt;br /&gt;  &lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;</summary>
    <dc:creator>Mounir Hallab</dc:creator>
    <dc:date>2022-04-10T23:11:27Z</dc:date>
  </entry>
</feed>
