Ich versuche, eine in FreeMarker integrierte verwenden, aber ich habe Probleme mit einer bestimmten Situation.Verwenden von FreeMarker-Einbauten mit zugewiesenen Variablen über mehrere Zeilen
Warum funktioniert das
<#assign foo="bar" />
${foo?trim}
aber nicht, dass
<#assign foo>
bar
</#assign>
${foo?trim}
?
Ich erhalte diese Ausnahme:
FreeMarker template error:
For "?trim" left-hand operand: Expected a string or something automatically convertible to string (number, date or boolean), but this has evaluated to a markup_output (wrapper: f.c.TemplateXHTMLOutputModel):
==> foo [in template "template.ftl" at line 23, column 7]
----
FTL stack trace ("~" means nesting-related):
- Failed at: ${foo?trim} [in template "faq.ftl" at line 23, column 5]
----
Java stack trace (for programmers):
----
freemarker.core.NonStringException: [... Exception message was already printed; see it above ...]
at freemarker.core.EvalUtil.coerceModelToTextualCommon(EvalUtil.java:494)
at freemarker.core.EvalUtil.coerceModelToStringOrUnsupportedMarkup(EvalUtil.java:407)
at freemarker.core.Expression.evalAndCoerceToStringOrUnsupportedMarkup(Expression.java:107)
at freemarker.core.BuiltInForString.getTargetString(BuiltInForString.java:34)
at freemarker.core.BuiltInForString._eval(BuiltInForString.java:29)
at freemarker.core.Expression.eval(Expression.java:81)
at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:96)
at freemarker.core.DollarVariable.accept(DollarVariable.java:59)
at freemarker.core.Environment.visit(Environment.java:362)
at freemarker.core.Environment.visitAndTransform(Environment.java:460)
at freemarker.core.BlockAssignment.accept(BlockAssignment.java:55)
at freemarker.core.Environment.visit(Environment.java:326)
at freemarker.core.Environment.visit(Environment.java:332)
at freemarker.core.Environment.process(Environment.java:305)
at freemarker.template.Template.process(Template.java:384)
...
Ich brauche die zweite Form, weil bar
mehrere Zeilen lang sein kann.
Wie kann ich das erreichen?