Jacky
I'm new here

PreviewUrl eines JSP-Includes

Hallo zusammen,

folgender JSP-Include funktioniert im Live-System nach dem Deployment, aber nicht in der Preview:

<%@ include file="$CMS_REF(pageref:"json")$"%>

Ich habe verschiedene abs-Werte für den $CMS_REF$ versucht, leider erhalte ich in der Preview immer den Fehler, dass die Seite nicht gefunden werden kann:

/preview_cache/204769/DE_c_262348.204773.jsp(20,2) PWC6117: File "/fs5preview/preview/204769/site/DE/current/204773/262439" not found

Ich habe nun versucht die URL über die Methode getPreviewUrl (Interface Previewable) zu ermitteln, aber ich verstehe nicht, wie der letzte Parameter "Map<?,?> params" aussehen muss.

Hat jemand vielleicht ein Beispiel für einen korrekten Aufruf von getPreviewUrl für mich?

Vielen Dank und viele Grüße

Jacky

6 Replies
Jacky
I'm new here

Ich übergebe jetzt als letzten Parameter einfach "null"

...

url = page.getPreviewUrl(masterLanguage, htmlSet, false, 4, null);

...

und erhalte folgende URL:

Das wäre jetzt so eigentlich korrekt, allerdings wird vor die URL noch "/preview_cache/204769" gesetzt und somit erhalte ich wieder den Fehler, dass die Seite nicht gefunden werden kann:

/preview_cache/204769/DE_c_262348.204773.jsp(20,2) PWC6117: File "/preview_cache/204769/http://Host:Port/fs5preview/preview/204769/page/DE/current/204773/261941" not found

Wie gehe ich nun am besten damit um?

Danke und Grüße

Jacky

0 Kudos

So sollte es funktionieren:

    <%

      // Strip context path from URL.

      final String fullUrl = "$CMS_REF(pageref:"embedded_content")$";

      final String contextPath = request.getContextPath();

      final String includeUrl = fullUrl.replaceAll(contextPath, "");

    %>

    <jsp:include page="<%= includeUrl %>" />

Peter
0 Kudos

Guten Morgen,

Danke für Deine Antwort. Das funktioniert aber leider nicht in meinem Fall, weil die Seite so erst zur Laufzeit eingebunden wird. In dem Include werden Daten/Variablen vorbereitet, die dann von der inkludierenden Seite zur Laufzeit gelesen werden. Ich benötige somit einen Include Directive, damit die Variablen bereits zur Übersetzungszeit gesetzt werden.

Kann ich die Preview URL auch mit FS-Boardmitteln ermitteln?

Vielen Dank und viele Grüße

Jacky

0 Kudos

Dann wird dir die URL leider auch nicht weiterhelfen, da diese kein Dateipfad ist.

Peter

Schade, dann muss ich die Preview-Anzeige direkt im inkludierenden File erzeugen Smiley Sad.

Danke und viele Grüße

Jacky

0 Kudos

Seit der in 5.2 neuen Multi-Tab-Unterstützung im ContentCreator sollte der Servlet-Path mittels indexOf("/preview") erfolgen.

      <%

          final String fullUrl = "$CMS_REF(pageref:"jspinclude")$";

          // 'fullUrl' contains the contextPath (and sub session id template in ContentCreator)

          // => The jsp:include tag expects the servlet path without the prefix

          final String includeUrl = fullUrl.substring(fullUrl.indexOf("/preview"));

      %>

      <jsp:include page="<%= includeUrl %>" /> 

request.getContextPath() enthält zwar den korrekten Context-Path, jedoch weicht der Context-Path im Rückgabewert von CMS_REF im ContentCreator ein wenig davon ab. Grund hierfür ist der Session-übergreifende Preview-Cache und das Identifikations-Merkmal in der URL für die SubSession ID im ContentCreator (z.B.: /fs5webedit/s=df15).