dluettel
Elite Observer

CMS_VALUE & Request Parmeter

Hallo Zusammen,

gibt es eine Möglichkeit, an die Request Parameter oder Session Parameter einer Seite mittels CMS_Value zu gelangen?

$CMS_VALUE(request)$ klappt nicht, weil das habe ich auch irgendwo hier gesehen.

Gruß

0 Kudos
5 Replies
mbergmann
Crownpeak employee

Hallo Daniel,

da es gar keine sessionspezifische Generierung gibt, ist das nicht möglich. Die Reihenfolge ist schlicht so, dass im Preview-Webserver bereits nur die schon geparsten Templates da sind.

Viele Grüße

Michael

0 Kudos

Hallo Michael,

danke für die Antwort.

Das ist schlecht, weil ich erhalte bei jsp jetzt mitlerweile sehr häufig, code too large.

Das liegt daran, dass wir den Mobile und Desktop Code zusammen im Template generieren müssen. Beim Aufruf der Seite wird dann ein getParameter gesetzt zur Auswertung, welcher den Code entsprechenden Code angezeigt.

Dafür haben wir in der MPP einen Schalter gebaut, der die preview mit dem entsprechenden parameter nochmal aufruft.

Deswegen muss ich irgendwie verhindern, dass bei isMobile true nur der mobile Code ausgegeben wird und sonst Desktop Code. Deswegen war der Gedanke irgendwie an einer CMS_IF den request Parameter zu prüfen, damit nur der der eine oder andere Code beim aufruf der Seite ausgeben wird.

Es geht dabei nur um die Preview in FirstSpirit. Die Generierung ist dabei egal.

<%@ page contentType="text/html; charset=UTF-8" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

$CMS_TRIM(level:3, char:"\n")$

$CMS_SET(webApp)$$CMS_RENDER(script: "getemplate", url: "/pfadzurDatei/seite.html")$$CMS_END_SET$

$CMS_SET(angApp)$$CMS_RENDER(script: "getemplate", url: "/pfadzurDatei/seite.html")$$CMS_END_SET$

<%

String isMobileRequest = request.getParameter("isMobile");

if(isMobileRequest == null){

  session.setAttribute("isMobile", false);

}else if(isMobileRequest.equals("false")){

  session.setAttribute("isMobile", false);

}else if(isMobileRequest.equals("true")){

session.setAttribute("isMobile", true);

}

Boolean isMobile = (Boolean) session.getAttribute("isMobile");

%>

<%

  if(isMobile == null){

  session.setAttribute("isMobile", false);

  }else if(isMobile == false){

%>

  $CMS_VALUE(webApp)$

<%

  }else if(isMobile == true){

%>

  $CMS_VALUE(angApp)$

<%

  }

%>

$CMS_END_TRIM$

Jetzt soll eben nur der webApp oder angApp ausgeben werden. Und das weis ich nur, wenn ich den Parameter isMobile auslesen kann.

Gruß

Daniel Lüttel

0 Kudos
mikula
Crownpeak employee

Hallo Daniel,

leider kann ich dir bei diesem konkreten Problem nicht direkt weiterhelfen. Wie sieht es denn aus mit JSP tags bzw. JSTL? Ich denke auf dauer werdet ihr nicht drum herum kommen, wenn ihr denn noch wartbaren code erzeugen wollt. Vielleicht löst sich damit auch euer too large problem?

Viele Grüße

Martin

0 Kudos
MichaelaReydt
Community Manager

Hallo Daniel,

wir ist denn der aktuelle Stand? Benötigst du noch weitere Hilfe oder konnte Martins Hinweis bzgl. JSP oder JSTL dir weiterhelfen?

Viele Grüße

Michaela

0 Kudos
hbarthel
New Responder

Eine Möglichkeit: kein JSP verwenden, sondern Freemarker oder Velocity, also irgend eine Template-Engine. Wartbarer wird es damit aber nicht.

Oder den Code kürzen. Man kann schon bei dem Stückchen, das gepostet wurde, erkennen, dass das nicht so ganz optimal impl. ist. Ein Java-Entwickler könnte / sollte da was rausholen können.

Oder noch besser: die Geschäftslogik in ein Modul auslagern. Aber um da Empfehlungen geben zu können, müsste man den kompletten Code sehen.

0 Kudos