Wie Ersetze ich Zeilenumbrüche mit <br /> mit freemarker und Frühling?
Habe ich eine internationalisierte app, verwendet spring und freemarker. Ich bin immer Inhalt von lokalisierten properties-Dateien verwenden.
${rc.getMessage("help.headings.frequently_asked_questions")}
Für einige der Inhalte gibt es Wagenrücklauf in der Immobilien-Werte. Weil ich die Anzeige in eine web-Seite möchte ich ersetzen Sie diese durch
.
Was ist der beste Weg, dies zu tun?
Edit: bei einer näheren Betrachtung scheint es, dass ich eigentlich gar nicht haben Wagenrücklauf in der property-Dateien. Die Eigenschaften sind wieder als single-line-strings.
Gibt es eine bessere Art und Weise zu erklären, die Eigenschaften, so dass Sie wissen, Sie sind multi-line?
help.faq.answer.new_users=If you have not yet set a PIN, please enter your username and passcode (from your token) in the boxes provided and leave the PIN field blank.\
You will be taken through the steps to create a PIN the first time you log in.
Cheers,
Pete
Du musst angemeldet sein, um einen Kommentar abzugeben.
${springMacroRequestContext.getMessage("help.headings.frequently_asked_questions", [], "", false)?html?replace("\n", "<br>")}
replace
<#function/>
- und/oder<#macro/>
und legen Sie es in eine Bibliothek importieren.funktioniert Prima.
Wenn Sie wollen, dass dies das Standard-Verhalten, betrachten Sie das schreiben eines benutzerdefinierten TemplateLoader wie vorgeschlagen, in diesem blog: http://watchitlater.com/blog/2011/10/default-html-escape-using-freemarker/.
Griff CR + LF (carriage return + line feed), Zeilenenden als LF tun:
Als der
Teil deiner Frage, vielleicht hilft das: Sie können zeilenabschluss-Zeichen in Ihrer Eigenschaft Werte mit den
\r
und\n
escape-Sequenzen, wie es erklärt ist in der API-Dokumentation vonjava.util.Eigenschaften#load(java.io.Reader)
.Ich würde empfehlen, das schreiben einer benutzerdefinierten Richtlinie für die es (siehe
freemarker.template.TemplateDirectiveModel
), so in Ihre Vorlagen können Sie so etwas schreiben<@my.textAsHtml springMacroRequestContext.getMessage(...) />
. Es ist wichtig, dass diese Richtlinie nicht funktionieren, so funktioniert es richtig in<#escape x as x?html>...</#escape>
. Sonst wäre es double-escaped. Mithilfe einer Richtlinie können Sie auch die höchste Leistung, können Sie direkt senden Sie die Ausgabe an den AusgangWriter
, eher als der Bau einerString
ersten.