Questions & Answers

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

Type a product name