M_Weklak
Returning Observer

Problem beim einfügen von Inhalten in DOMTable via Modul

Jump to solution

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?

0 Kudos
1 Solution

Accepted Solutions

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

View solution in original post

0 Kudos
2 Replies
M_Weklak
Returning Observer

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

0 Kudos

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

0 Kudos