12
votes

Comment remplacer les retours de chariot avec
en utilisant Freemarker et Spring?

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.


0 commentaires

5 Réponses :


17
votes

$ {springmacrorequestcontext.getmessage ("help.headings.frequententement_asked_questions", [], "" "faux)? html? Remplacez (" \ n "," < / p>


2 commentaires

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 /> et / ou <# macro /> et placez-le dans une bibliothèque d'importation.



0
votes

Je recommanderais d'écrire une directive personnalisée pour celui-ci (voir freemarker.template.templedirectivemodel ), donc dans vos modèles, vous pouvez écrire quelque chose comme <@ my.textashtml springmacrorequestContext.getmessage (. ..) /> . Il est important que ceci est une directive, non fonctionne, il fonctionne donc correctement à l'intérieur <# échappatoire x comme x? Html> ... . 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 , plutôt que de construire une chaîne .


0 commentaires

1
votes

sur le

Y a-t-il un meilleur moyen de déclarer les propriétés afin qu'ils savent qu'ils sont multilités?

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 et \ n séquences d'échappement, comme si c'était expliqué dans le Documentation API de java.util.properties # charge (java.io.reader) .


0 commentaires

2
votes
<#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/.

0 commentaires

3
votes

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>


0 commentaires