Ich habe länger im Internet nachgeschaut, aber finde leider keine Lösung...
Ich habe einen HTML Text als String, den mein User definieren kann.
Daher habe ich auch nicht 100% einen Einfluss, wie dieser HTML String aussieht.
Bevor ich die Verarbeitung mit Thymeleaf starte, parse ich erstmal alle Variablen mir in eine Liste.
Anschließend erstelle ich mir den Context und speichere dort die Variablen:
Nun habe ich einige Variablen innerhalb dem String. Manchmal gibt es aber Variablen, die nicht gefunden werden oder richtig aufgelöst werden können von Thymeleaf.
Eine Exception von Thymeleaf könnte ich fangen, allerdings wird der String nicht weiterverarbeitet um die Variablen zu ersetzen.
Wie schaffe ich es, dass die Variablen, die ein Fehler in Thymeleaf einfach entweder
a) Nicht ersetzt werden
oder
b) mit einem "" ersetzt werden?
Nun bekomme ich eben diese Exception:
Hello, !</p>
Wenn ich die Exception fange, erhalte ich aber:
Hello,
Also sprich der nachfolgende Text wird nicht mehr weiter verarbeitet...
Wie kann ich das lösen?
Gibt es eine Einstellung mit der ich die Fehler ignorieren kann?
Danke für die Hilfe
Ich habe einen HTML Text als String, den mein User definieren kann.
Daher habe ich auch nicht 100% einen Einfluss, wie dieser HTML String aussieht.
Bevor ich die Verarbeitung mit Thymeleaf starte, parse ich erstmal alle Variablen mir in eine Liste.
Anschließend erstelle ich mir den Context und speichere dort die Variablen:
Code:
Context context = new Context();
context.setVariable("customer.", customer);
Nun habe ich einige Variablen innerhalb dem String. Manchmal gibt es aber Variablen, die nicht gefunden werden oder richtig aufgelöst werden können von Thymeleaf.
Eine Exception von Thymeleaf könnte ich fangen, allerdings wird der String nicht weiterverarbeitet um die Variablen zu ersetzen.
Wie schaffe ich es, dass die Variablen, die ein Fehler in Thymeleaf einfach entweder
a) Nicht ersetzt werden
oder
b) mit einem "" ersetzt werden?
Code:
public class Test {
public static void main(String[] args) {
// Erstelle einen String-Template-Resolver
StringTemplateResolver templateResolver = new StringTemplateResolver();
templateResolver.setTemplateMode(TemplateMode.HTML);
// Logging ausstellen
Logger thymeleafLogger = (Logger) LoggerFactory.getLogger("org.thymeleaf");
thymeleafLogger.setLevel(Level.OFF);
// Erstelle eine Template-Engine
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
// Deaktivieren Sie den Debug-Modus
// Definiere den Template-String
// String templateString = "<p>Hello, [[${name}]]!</p>";
String templateString = "<p>Hello, {{jobSharingCompany..id}} !</p>";
JobSharingCompanyDTO jobSharingCompany = new JobSharingCompanyDTO();
jobSharingCompany.setId("1");
// ObjectForReplacementObject replacementObject = new ObjectForReplacementObject();
// PlaceholderFunctions.replaceObject(templateString, "customer.name", customer.getName(), replacementObject);
// Erstelle einen Kontext mit den Variablen
Context context = new Context();
// context.setVariables(replacementObject.getReplacementVariableList());
context.setVariable("jobSharingCompany.", jobSharingCompany);
// Ersetze benutzerdefinierte Variablen-Syntax durch Standard-Syntax
templateString = replaceCustomVariableSyntax(templateString);
// Prozessiere das Template mit den Variablen
StringWriter stringWriter = new StringWriter();
// try {
templateEngine.process(templateString, context, stringWriter);
// } catch (Exception e) {
// // Catch any exceptions and return an empty string
// }
// Gib das resultierende HTML aus
System.out.println(stringWriter.toString());
}
// Methode zum Ersetzen der benutzerdefinierten Variablen-Syntax durch
// Standard-Syntax
private static String replaceCustomVariableSyntax(String templateString) {
String output = templateString.replaceAll("\\{\\{([^}]+)\\}\\}", "[[\\${$1}]]");
return output;
}
}
Nun bekomme ich eben diese Exception:
Nun sollte einfach das herauskommen:Caused by: org.attoparser.ParseException: Exception evaluating OGNL expression: "jobSharingCompany..id" (template: "<p>Hello, [[${jobSharingCompany..id}]] !</p>" - line 1, col 13)
Hello, !</p>
Wenn ich die Exception fange, erhalte ich aber:
Hello,
Also sprich der nachfolgende Text wird nicht mehr weiter verarbeitet...
Wie kann ich das lösen?
Gibt es eine Einstellung mit der ich die Fehler ignorieren kann?
Danke für die Hilfe