Also so ganz habe ich das noch nicht verstanden, sorry.
Wenn ich einen String habe:
String sReplacement = Hallo $customer.customerName,
....
Und in meinem Backend habe ich eine Methode, die mir dann diesen String mit den "echten" Daten befüllt:
Am Ende kommt dann ein String wiederum heraus, aber eben mit den "richtigen" Daten
public String replace(String sReplacement, Customer customer) {
context.put("customer", customer);
StringWriter writer = new StringWriter();
t.merge( context, writer );
System.out.println( writer.toString() );
}
Passt das so?
Jetzt gibt es aber ein Problem:
Ich möchte nicht, dass ALLE Felder ausgegeben werden können (nicht vom normalen User).
So wie ich das verstehe, könnte er dann in seiner Textvorlage: $customer.id hereinschreiben, und dann wird eben die ID ausgelesen.
Daher ist die Idee die Platzhalter in einer DB zu speichern:
- ID
- Name (customer.customerName)
- Entity
In etwa so:
public String replace(String sReplacement, Customer customer) {
// Hole Platzhalter Liste aus DB
List<ReplacementEntity> list = holeVonDatenbank();
for(ReplacementEntity r : list){
context.put(r.getName(), customer);
}
StringWriter writer = new StringWriter();
t.merge( context, writer );
System.out.println( writer.toString() );
}
Eine weiter Frage:
Kann man den Platzhalter auch anderst darstellen, als $customer.customerName.
Ich hätte das eher gerne so: {{customer.customerName}} oder [%customer.customerName%]
Oder funktioniert das dann nicht mehr in Velocity?