- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Migration CMS_INPUT_TEXT zu CMS_INPUT_DOM - Problem mit "&" Zeichen
Hallo zusammen,
im Zuge einer Migration mรผssen Inhalte von einem CMS_INPUT_TEXT in ein CMS_INPUT_DOM รผbertragen werden. Hierfรผr verwenden wir diese Methode:
private void copyForLanguage(FormData formData, SectionImpl section, String sourceFieldName, String targetFieldName, Language language) {
FormField<?> sourceFormField = formData.get(language, sourceFieldName);
if (!sourceFormField.isEmpty()) {
FormField<?> targetFormField = formData.get(language, targetFieldName);
targetFormField.set(sourceFormField.get());
section.setFormData(formData);
}
}
Sobald jedoch ein "&" Zeichen in dem String ist, welcher รผbertragen werden soll gibt es eine InappropriateValueException:
Exception in thread "main" de.espirit.firstspirit.forms.InappropriateValueException: In 'st_title_dom': Invalid value for 'st_title_dom' (de.espirit.firstspirit.access.store.templatestore.gom.GomDom).
at de.espirit.firstspirit.store.access.DataWrappingFormData$EditorValueWrappingFormField.set(DataWrappingFormData.java:233)
at com.nord.fs.migration.ContentCopy.copyForLanguage(ContentCopy.java:197)
at com.nord.fs.migration.ContentCopy.copyFieldsFromCardToCard(ContentCopy.java:90)
at com.nord.fs.migration.section.teaser.AllTeaserToTeaser.migrate(AllTeaserToTeaser.java:63)
at com.nord.fs.migration.StartSectionMigration.main(StartSectionMigration.java:74)
Caused by: de.espirit.firstspirit.access.editor.value.InvalidValueException: Invalid value for 'st_title_dom' (de.espirit.firstspirit.access.store.templatestore.gom.GomDom).
at de.espirit.firstspirit.store.access.DataUtil.setValueToEditor(DataUtil.java:230)
at de.espirit.firstspirit.store.access.DataWrappingFormData$EditorValueWrappingFormField.set(DataWrappingFormData.java:227)
... 4 more
Caused by: java.lang.IllegalArgumentException: Could not parse as DOM: unexpected character ' ' -> MMY>Intralogistik & Flughรคfen</DUMMY>
at de.espirit.firstspirit.access.editor.value.DomElementImpl.set(DomElementImpl.java:268)
Aktuell habe ich unsere Methode etwas angepasst und benutzte fรผr diesen speziellen Fall die escapeHtml Methode von StringEscapeUtils. Dies sieht so aus:
private void copyForLanguage(FormData formData, SectionImpl section, String sourceFieldName, String targetFieldName, Language language) {
FormField<?> sourceFormField = formData.get(language, sourceFieldName);
if (!sourceFormField.isEmpty()) {
FormField<?> targetFormField = formData.get(language, targetFieldName);
if(sourceFormField.getType().equals(String.class) && targetFormField.getType().equals(DomElement.class)) {
targetFormField.set(StringEscapeUtils.escapeHtml(sourceFormField.get().toString()));
} else {
targetFormField.set(sourceFormField.get());
}
section.setFormData(formData);
}
}
Irgendwie bin ich mir jedoch etwas unsicher ob dies der richtige Weg ist. Denkt ihr ich kรถnnte meine Methode so verwenden oder gibt es einen besseren Weg?
Lieben Gruร,
Sebastian
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Sebastian,
auf dem Weg, der DOM-Komponente eine einfache Zeichenkette als Wert zu setzen, wird der Text eingefasst und als XML interpretiert. Das Problem ist dann, dass ein einfaches Kaufmanns-Und in XML eine Ausnahme reprรคsentiert. Prosatext vorher HTML-konform zu transformieren ist sicherlich ein sinnvoller Schritt.
Ich weiร leider nicht, von wo du die StringEscapeUtils beziehst. Die in FirstSpirit enthaltene Version ist zumindest keine API und kรถnnte in kommenden Versionen potentiell entfallen. Wenn die Migration ein einmaliger Akt ist, wirst du damit vermutlich leben kรถnnen.
Beste Grรผรe
Stefan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Sebastian,
auf dem Weg, der DOM-Komponente eine einfache Zeichenkette als Wert zu setzen, wird der Text eingefasst und als XML interpretiert. Das Problem ist dann, dass ein einfaches Kaufmanns-Und in XML eine Ausnahme reprรคsentiert. Prosatext vorher HTML-konform zu transformieren ist sicherlich ein sinnvoller Schritt.
Ich weiร leider nicht, von wo du die StringEscapeUtils beziehst. Die in FirstSpirit enthaltene Version ist zumindest keine API und kรถnnte in kommenden Versionen potentiell entfallen. Wenn die Migration ein einmaliger Akt ist, wirst du damit vermutlich leben kรถnnen.
Beste Grรผรe
Stefan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Super, danke fรผr die schnelle Antwort. Ich beziehe StringEscapeUtils von org.apache.commons. Ist aber auch nur eine einmalige Sache.

