kannengi
Elite Observer

Zugriff auf deployte Dateien in der Vorschau

Hallo Community,

ich habe eine Java-Anwendung über JSP-Tags in einer Seite eingebunden, die in der Vorschau funktionieren soll.

Die Anwendung muss bei Aufruf eine XML-Datei einlesen, die auch von FirstSpirit (aus einer Datenquelle) als Seite generiert (und deployed) wird.

Die Referenz auf die Seite übergebe ich der Java-Anwendung über ein JSP-Tag Attribut in der betreffenden Absatzvorlage mit $CMS_REF(pageref:"xml-datei", abs:1)$.

Auf dem Deploymentziel funktioniert das und ich kann die Datei mit ServletContext.getResourceAsStream(übergebener Pfad) lesen.

In der Vorschau dagegen stellt sich mir das Problem, dass 1) die XML-Seite nicht da ist, falls sie noch nie "direkt" von der Vorschau aufgerufen wurde und 2) dass,

selbst wenn die XML-Seite explizit in der Vorschau aufgerufen wurde, sie zwar im preview-cache physikalisch liegt, der von CMS_REF erzeugte Pfad aber nicht

direkt auf diese Datei zeigt, sie also nicht getResourceAsStream() gelesen werden kann.

Bsp. von CMS_REF erzeugte URL: /fs5preview_795243/preview/795243/site/DE/current/795257/993741

tatsächlicher Pfad: /fs5preview_795243/preview_cache/795243/DE_c_993741.795257.xml

Als einzige Lösunge ist mir bisher die Idee gekommen, die Datei von Java Code aus über eine http Verbindung auszulesen.

Vielleicht etwas umständlich und auch mit dem Nachteil verbunden, dass ich eine Fallunterscheidung zwischen Vorschau und deployter Anwendung

einbauen muss.

Hat jemand noch eine Idee oder hat schon mal vergleichbare Anforderungen gelöst?

Danke und Gruß,

Benny Kannengießer

// re-lounge

0 Kudos
2 Replies
marza
I'm new here

Hallo Benny,

mir fällt da auch kein besserer Weg ein. In den FirstSpirit-Templates kannst Du in der Tat den Fall der Vorschau durch die Abfrage der Eigenschaft #global.preview abfangen wie Du sagtest (s. http://www.e-spirit.com/odfs51/Vorlagenentwicklung/Vorlagensyntax/Systemobjekte/global/vorschaubezog...😞

$CMS_IF(#global.preview)$ ... $CMS_ELSE$ ... $CMS_END_IF$

(oder inline: $CMS_VALUE(if(#global.preview, <then-case>, <else-case>))$ )

Leider kann man hier meines Wissens nach auch nichts mit der URL-Factory bewirken.

Grüße

Marian

pavone
I'm new here

Hallo Benny,

benötigst Du noch weitere Hilfe oder hat Dir Marians Antwort geholfen? In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

Viele Grüße

Tim

0 Kudos