2017-08-05 1 views
0

Ich habe einen Knoten, der viel Text enthält, der als seine jcr:data Eigenschaft gespeichert wird. Ich kann von ihm gelesen und es in der Konsole von diesem groovy Code anzeigen:Wie kann ich Textinhalt als jcr: data Eigenschaft in aem speichern?

InputStream content = node.getNode("jcr:content").getProperty("jcr:data") 
        .getStream() 
println(content.text) //it shows me its content = text 

Jetzt will ich in diesem Text einige Zeichen ändern und sie wieder als jcr:data Eigenschaft festgelegt. Ich habe versucht zu tun:

ValueFactory factory = session.getValueFactory() 
InputStream is = new ByteArrayInputStream(Charset.forName("UTF-8") 
        .encode(content.text.replaceAll("xx", "yy").array()) 
Binary binary = factory.createBinary(is) 
Value value = factory.createValue(binary) 
node.setProperty("jcr:data", value) 

Aber das löst einen Fehler:

unexpected token: Binary 

Antwort

1

Haben Sie daran gedacht javax.jcr.Binary zu importieren?

Esit: Sie sind eine Klammer vor .Array fehlt()

+0

ja, ich habe diese importiert ... es sieht immer noch nicht die 'Binary' aber ... Aber vielleicht ist es eine andere Möglichkeit um um meinen eigenen Inhalt in 'jcr: data' zu schreiben, anstatt' Binary' zu verwenden? – user3766930

+0

Hey Mann, fehlende Klammer rechts nach Array() hat den Trick gemacht, danke, dass du es bemerkt hast! – user3766930

Verwandte Themen