Questions & Answers

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

Type a product name