ich habe durch deine Antwort noch einen Fehler in meiner Header-Funktion gefunden, dort hat zweimal ein $CMS_VALUE()$ gefehlt.
<CMS_ARRAY_PARAM name="unselectedHTML">
<CMS_ARRAY_ELEMENT><![CDATA[$CMS_VALUE(#nav)$]]></CMS_ARRAY_ELEMENT>
</CMS_ARRAY_PARAM>
<CMS_ARRAY_PARAM name="selectedHTML">
<CMS_ARRAY_ELEMENT><![CDATA[$CMS_VALUE(#nav)$]]></CMS_ARRAY_ELEMENT>
</CMS_ARRAY_PARAM>
Leider funktioniert es damit jedoch auch noch nicht, ich bekomme stattdessen in der Vorschau folgende NullPointerException:
java.lang.NullPointerException
java.lang.NullPointerException
at de.espirit.firstspirit.parser.EvaluatorImpl.popContext(EvaluatorImpl.java:516)
at de.espirit.firstspirit.generate.PreviewProduction._calculate(PreviewProduction.java:275)
at de.espirit.firstspirit.generate.PreviewProduction.calculate(PreviewProduction.java:116)
at de.espirit.firstspirit.generate.AbstractPreviewManager.getPreview(AbstractPreviewManager.java:134)
at de.espirit.firstspirit.generate.DistributedPreviewManagerImpl.getPreview(DistributedPreviewManagerImpl.java:100)
at de.espirit.firstspirit.io.servlet.PreviewServlet$1.outdatedCallback(PreviewServlet.java:364)
at de.espirit.firstspirit.io.servlet.PreviewServlet$CacheEntry.perform(PreviewServlet.java:1202)
at de.espirit.firstspirit.io.servlet.PreviewServlet.deliverPreview(PreviewServlet.java:391)
at de.espirit.firstspirit.io.servlet.PreviewServlet.doPost(PreviewServlet.java:250)
at de.espirit.firstspirit.io.servlet.PreviewServlet.doGet(PreviewServlet.java:209)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doChain(WebAuthentication.java:1040)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:800)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:230)
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 de.espirit.firstspirit.server.jetty.JettyManagerImpl$FailSafeWebAppContext.doHandle(JettyManagerImpl.java:919)
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:311)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.base/java.lang.Thread.run(Thread.java:834)
Wenn ich im Header $CMS_VALUE(#nav.label)$ verwende, funktioniert es. Allerdings benötige ich nicht nur das Label, sondern mindestens #nav.label, #nav.ref und #nav.id.
Ich habe in der Zwischenzeit auch versucht, aus den Objekten im Header eine Map mit den benötigten Objekten zu erstellen, aber dies führt entweder zu dem originalen Fehler, oder mit dem breadcrumb.toString zu einem Objekt in einem String, was leider auch noch nicht das gewünschte Ergebnis ist:
...
"breadcrumb": "{\"label\":\"Testseite\"}",
...