Search the FirstSpirit Knowledge Base
Hallo
ich möchte gerne per Modul Inhalte in einen Sprachabhängigen DOMTable schreiben. Das funktioniert auch, wenn ich das für die Mastersprache mache - bei allen anderen Sprachen passiert nichts - ohne Meldung.
Hier mein Codeschnipsel:
String translatedValue = this.getTranslation(value, sourceLanguage.getAbbreviation().substring(0, 2), this.allLanguages.get(i).getAbbreviation().substring(0, 2));
translatedNode = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(newByteArrayInputStream(StringEscapeUtils.unescapeXml(translatedValue).getBytes())).getDocumentElement();
TableImpl translatedTable = new TableImpl(translatedNode, element, this.contextMenuContext, this.allLanguages.get(i), true);
((TableImpl) formData.get(this.allLanguages.get(i), formElement.name()).get()).replace(translatedTable);
Analog für den DomEditor funktioniert die Sache tadellos.
Leider gibt es keine Doku über den Table Konstruktor. Dort scheint es keine Rolle zu spielen, welche Sprache ich übergebe.
Kann hier jemand weiterhelfen?
habe es nun gelöst. ein
formData.get(this.allLanguages.get(i), formElement.name()).set(translatedTable);
führt zum gewünschten ergebnis.
D.h. für alle die über das gleiche Problem stolpern:
Es muss ein neues Table Objekts mit den gewünschten Inhalten erzeugt werden und anschießend der Eingabekomponente mit set() zugewiesen werden. Die Manipulation des bestehenden Table Objekts mit replace() führte zumindest bei mir nicht zu den gewünschten ergebnissen.
viele Grüße
Mathias Weklak
Hallo in die Runde,
ich hatte etwas Zeit mich weiter damit zu beschäftigen.
Ergebnis: die methode replace(Table) der Klasse Table funktioniert nur, wenn in der jeweiligen Sprache bereits ein Inhalt existiert. Ist das so gewollt?
d.h. die Zeile
((TableImpl) formData.get(this.allLanguages.get(i), formElement.name()).get()).replace(translatedTable);
funktioniert nur, wenn für den dom table im entsprechenden sprachreiter isEmpty == false zurückkommt. ansonsten passiert nichts.
gibt es eine andere möglichkeit per script inhalte in ein dom table zu schreiben, außer einen neuen (mit dem entsprechenden inhalt) zu erzeugen und den alten zu ersetzen?
vielen dank
habe es nun gelöst. ein
formData.get(this.allLanguages.get(i), formElement.name()).set(translatedTable);
führt zum gewünschten ergebnis.
D.h. für alle die über das gleiche Problem stolpern:
Es muss ein neues Table Objekts mit den gewünschten Inhalten erzeugt werden und anschießend der Eingabekomponente mit set() zugewiesen werden. Die Manipulation des bestehenden Table Objekts mit replace() führte zumindest bei mir nicht zu den gewünschten ergebnissen.
viele Grüße
Mathias Weklak