Skip to main content

JSON-Ausgabe der Navigation-Funktion

Comments

5 comments

  • Zendesk API User
    Author: Peter_Jodeleit - 9/25/2020 13:48

    Hallo Andreas,

    so müsste es funktionieren:

    1. $CMS_VALUE(json(#this).set("breadcrumb", breadcrumb.toString()))$

    Viele Grüße,
    Peter

    0
  • Zendesk API User
    Author: andreas_pabst - 9/25/2020 14:22

    Hallo Peter,

    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\"}",

    ...

    Viele Grüße

    Andreas Pabst

    0
  • Zendesk API User
    Author: Peter_Jodeleit - 9/25/2020 14:25

    Hallo Andreas,

    wende dich doch mit diesem Trace unter der Angabe der FirstSpirit Version an unseren Tech-Support.

    Danke,
    Peter

    0
  • Zendesk API User
    Author: oboeck - 11/29/2020 20:10

    Hallo Andreas,

    könntest du ggfs. die Lösung des Tech-Support der Community mitteilen? Ich bin gerade am evaluieren ob ein Switch von dem bisherigen Ansatz zu einer kompletten strukturierten Datengenerierung per json() sinn macht. Und ich frag mich aktuell wie man das mit den Navigations-Funktionen richtig umsetzt. Dein Thread ist ein kleines Puzzleteil und ich würde mich über mehr Infos freuen.

    Danke und Grüße

    Olli

    0
  • Zendesk API User
    Author: andreas_pabst - 4/13/2021 14:56

    Hallo Olli,

    leider habe ich deine Frage erst jetzt gesehen. Wahrscheinlich hilft dir die Antwort des Tech-Supports jetzt nichts mehr, aber der Vollständigkeit halber möchte ich sie trotzdem teilen:

    <CMS_HEADER>

    <CMS_FUNCTION name="Navigation" resultname="breadcrumb">

         <CMS_PARAM name="expansionVisibility" value="purepath"/>

         <CMS_PARAM name="suppressEmptyFolders" value="0" />

         <CMS_PARAM name="wholePathSelected" value="0" />

    <CMS_ARRAY_PARAM name="unselectedHTML">

         <CMS_ARRAY_ELEMENT index="0..5"><![CDATA[$CMS_SET(void,breadcrumb_list.add({"label":#nav.label,"ID":#nav.id,"ref":#nav.ref,"URL":ref(#nav.ref).url}))$]]></CMS_ARRAY_ELEMENT>

    </CMS_ARRAY_PARAM> 

       

    <CMS_ARRAY_PARAM name="selectedHTML">   

         <CMS_ARRAY_ELEMENT index="0..5"><![CDATA[$CMS_SET(void,breadcrumb_list.add({"label":#nav.label,"ID":#nav.id,"ref":#nav.ref,"URL":ref(#nav.ref).url}))$]]></CMS_ARRAY_ELEMENT>

    </CMS_ARRAY_PARAM>           

    </CMS_FUNCTION>

    </CMS_HEADER>

    $CMS_SET(breadcrumb_list,[])$$CMS_VALUE(breadcrumb)$

    $CMS_VALUE(json(#this).set("breadcrumb", breadcrumb_list))$

    Viele Grüße

    Andreas Pabst

    0

Please sign in to leave a comment.