- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
replaceAll benutzen um hochkommas zu filtern
Hallo :smileygrin:
Ich versuche gerade aus einer Datenquelle valide Json files zu generieren die in einzelnen eingabekomponenten CMS_INPUT_DOM verwenden und dort können auch links angelegt sein. beim lesen der dateien stört sich javascript natürlich an den hochkommas und umbrüchen im inhalt.
Die Umbrüche entferne ich mit CMS_TRIM, aber bei den Hochkommas bin ich ratlos weil die syntax nicht akzeptiert wird.
Mein Beispiel:
$CMS_IF(#cs.isFirstContentRow)${"addon":[ {
$CMS_ELSE$
{
$CMS_END_IF$
"name":"$CMS_TRIM(level:4)$$CMS_VALUE(#row.name.replaceAll("", ""), default:"")$$CMS_END_TRIM$",
"item_id":"$CMS_TRIM(level:4)$$CMS_VALUE(#row.ITEM_ID, default:"")$$CMS_END_TRIM$",
"shortdesc":"$CMS_TRIM(level:4)$$CMS_VALUE(#row.shortdesc.replaceAll("", ""), default:"")$$CMS_END_TRIM$",
"longdesc":"$CMS_TRIM(level:4)$$CMS_VALUE(#row.longdesc.replaceAll("", ""), default:"")$$CMS_END_TRIM$"
$CMS_IF(!#cs.isLastContentRow)$
},
$CMS_ELSE$
]}}
$CMS_END_IF$
Meine Vermutung war dass #row.name.replaceAll("\"", "\\"") funktionieren würde um aus einem " ein \" zu machen, dem ist aber leider nicht so.
Selbst bei einem funktionierenden replacing von beispielsweise #row.name.replaceAll(" ", "-") ist die ausgabe plötzlich leer was aber nur bei INPUT_DOM passiert -> der name ist beispielsweise ein INPUT_TEXT und da funktioniert das testreplacing
Bitte um Hilfe
LG Chris
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Müsste da nicht replaceAll("\"", "\\\"") gemacht werden (3 Backslashes, der erste escaped den 2. Backslash, der 3. das doppelte Hochkommata)?!
Deine Variante ist syntaktisch falsch, was in den "Fehlern der Vorschau" angezeigt werden müsste.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Der syntaxfehler wurde natürlich angezeigt und ich hab ihn mitlerweile schon korrigiert (danke für die Hilfe)... Leider kommt nun aber nichts mehr zur Anzeige.
$CMS_IF(#cs.isFirstContentRow)${"addon":[ {
$CMS_ELSE$
{
$CMS_END_IF$
"item_id":"$CMS_TRIM(level:4)$$CMS_VALUE(#row.ITEM_ID, default:"")$$CMS_END_TRIM$",
"name":"$CMS_TRIM(level:4)$$CMS_VALUE(#row.name, default:"")$$CMS_END_TRIM$",
"shortdesc":"$CMS_TRIM(level:4)$$CMS_VALUE(#row.shortdesc.replaceAll("\"", "\\\""), default:"")$$CMS_END_TRIM$",
"longdesc":"$CMS_TRIM(level:4)$$CMS_VALUE(#row.longdesc.replaceAll("\"", "\\\""), default:"")$$CMS_END_TRIM$"
$CMS_IF(!#cs.isLastContentRow)$
},
$CMS_ELSE$
}
]}
$CMS_END_IF$
bei shortdesc und longdesc ist im generierten file alles leer.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Da kann ich "aus der Ferne" nicht viel zu sagen. Wenn bei "Fehler der Vorschau" jetzt nichts mehr angemeckert wird könnte ich mir nur noch vorstellen, das der "default" Fall von $CMS_VALUE zuschlägt (der ist ja auch "leer").
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich hab keine Fehler in der Vorschau, das ist richtig. Was mich sehr stutzig macht ist, dass es bei INPUT_TEXT sehrwohl funktioniert und bei INPUT_DOM eben nicht. (bei beiden ist der default wert leer)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, hatte im Beitrag das CMS_INPUT_DOM überlesen. "replaceAll" ist auf String definiert, CMS_INPUT_DOM liefert aber keinen String. D.h. da muss zunächst die String-Konvertierung durchgeführt werden. Wie das funktioniert, wurde in der Community schon mal erkärt. Bitte mal die Suche bemühen..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Suche und auf basis dessen Diverseste Versuche bringen mir leider nicht das gewünschte ergebnis:
"longdesc":"$CMS_TRIM(level:4)$$CMS_VALUE(#row.longdesc, default:"")$$CMS_END_TRIM$",
liefert -> "longdesc":"<p>Ausgenommen ... vorbehalten. <a href="....pdf" target="">Kompatible</a></p>",
"longdesc":"$CMS_TRIM(level:4)$$CMS_VALUE(#row.longdesc.toText(true).replaceAll("\"", "\\\""), default:"")$$CMS_END_TRIM$",
liefert -> "longdesc":"<p>Ausgenommen ...vorbehalten. <a href="#" linkid="0297c57c-6bc8-4860-b1fc-212e716a61f4">Kompatible</a></p>",
"longdesc":"$CMS_TRIM(level:4)$$CMS_VALUE(#row.longdesc.toText(false).replaceAll("\"", "\\\""), default:"")$$CMS_END_TRIM$"
liefert -> "longdesc":"Ausgenommen ...vorbehalten. Kompatible"
"longdesc":"$CMS_TRIM(level:4)$$CMS_VALUE(#row.longdesc.toString, default:"")$$CMS_END_TRIM$"
liefert -> "longdesc":"de.espirit.firstspirit.access.editor.value.DomElementImpl@495f3eb0"
"longdesc":"$CMS_TRIM(level:4)$$CMS_VALUE(#row.longdesc.toString.replaceAll("\"", "\\\""), default:"")$$CMS_END_TRIM$"
liefert -> "longdesc":"de.espirit.firstspirit.access.editor.value.DomElementImpl@17a4988c"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Nach folgendem Prinzip sollte es klappen:
$CMS_SET(tmp)$$CMS_VALUE(meinDOM)$$CMS_END_SET$
$CMS_VALUE(tmp.toString.replaceAll("a","b"))$
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Fehler bekomm ich jetzt keinen mehr und die ausgabe ist auch nicht leer, das replacement funktioniert jedoch nicht.
$CMS_SET(tmplong)$$CMS_TRIM(level:4)$$CMS_VALUE(#row.longdesc)$$CMS_END_TRIM$$CMS_END_SET$
"longdesc":"$CMS_VALUE(tmplong.toString.replaceAll("a","A"))$"
FUNKTIONIERT und tauscht a gegen A
$CMS_SET(tmpshort)$$CMS_TRIM(level:4)$$CMS_VALUE(#row.shortdesc)$$CMS_END_TRIM$$CMS_END_SET$
"shortdesc":"$CMS_VALUE(tmpshort.toString.replaceAll("\"","\\\""))$",
FUNKTIONIERT NICHT - tauscht nichts aus
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Verwende mal anstelle von replaceAll replace. Dann sollte es gehen.

