J'ai une application internationalisée qui utilise le printemps et le freemarker. Je reçois du contenu à partir de fichiers de propriétés localisés à l'aide.
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.
5 Réponses :
$ {springmacrorequestcontext.getmessage ("help.headings.frequententement_asked_questions", [], "" "faux)? html? Remplacez (" \ n "," code> < / p>
Remplacer les travaux. Lorsque je suis un peu plus de temps, j'engagerai l'idée d'une directive personnalisée mentionnée par Ddekany. Jusque-là, cela fait l'affaire.
Peter, vous feriez mieux de faire le freemarker approprié <# fonction /> code> et / ou
<# macro /> code> et placez-le dans une bibliothèque d'importation.
Je recommanderais d'écrire une directive personnalisée pour celui-ci (voir freemarker.template.templedirectivemodel code>), donc dans vos modèles, vous pouvez écrire quelque chose comme
<@ my.textashtml springmacrorequestContext.getmessage (. ..) /> code>. Il est important que ceci est une directive, non fonctionne, il fonctionne donc correctement à l'intérieur
<# échappatoire x comme x? Html> ... # échappement> code>. Sinon, ce serait double-échappé. L'utilisation d'une directive peut également donner les performances les plus élevées, car vous pouvez envoyer directement la sortie à la sortie
écrivain code>, plutôt que de construire une chaîne
code>. P>
sur le p>
Y a-t-il un meilleur moyen de déclarer les propriétés afin qu'ils savent qu'ils sont multilités? P> blockQuote>
Une partie de votre question, peut-être que cela aide: vous pouvez inclure des caractères de terminaison de ligne dans vos valeurs de propriétés à l'aide des
\ r code> et
\ n code> séquences d'échappement, comme si c'était expliqué dans le Documentation API de
java.util.properties # charge (java.io.reader) code>
. P>
<#escape x as x?html?replace('\n', '<br>')>...</#escape> works just fine.If you want this to be the default behaviour, consider writing a custom TemplateLoader as suggested in this blog: http://watchitlater.com/blog/2011/10/default-html-escape-using-freemarker/.
Pour gérer les terminaisons de ligne CR + LF (Retour de chariot + alimentation en ligne), ainsi que juste si vous faites ceci:
<#escape x as x?html?replace("\\r?\\n","<br />",'r')>...</#escape>