Недавно я включил автоматическое экранирование в Freemarker и изменил файлы .ftl
на .ftlh
, чтобы убедиться, что они отформатированы/экранированы как HTML. Однако это означает, что любые теги inline <script>
или <style>
вызывают HTML-экранирование, чего я не хочу. Я могу решить эту проблему, делая это:Многоязычный авто-побег в Freemarker
<script>
[#outputformat "JavaScript"]
jQuery(".stuff").blah();
[/#outputformat]
</script>
Это работает, но кажется, что много работы, чтобы добавить эту обертку вокруг содержимого каждого сценария тега. Похоже, имеет смысл иметь OutputFormat, который достаточно умен, чтобы обнаруживать теги сценария/стиля и использовать правильный формат, или альтернативные пользовательские теги, которые имеют тот же эффект, что и выше. Что-то вроде:
[@smartscript]
jQuery(".stuff").blah();
[/@smartscript]
Неужели что-то подобное (или что-то еще, что решает эту проблему) уже существует? Я ничего не смог найти.
Спасибо! Есть ли где-нибудь я могу больше узнать о порядке и влиянии того, как оцениваются #outputformat и макрос, такие как @script? Мне трудно найти его в документах. – xdhmoore
Существует глава об автоматических экранах и форматах вывода: http://freemarker.org/docs/dgui_misc_autoescaping.html#dgui_misc_autoescaping_overrideoformat. См. Параграф, в котором говорится, что «каждая позиция в шаблоне имеет связанный выходной формат». – ddekany
Ах, отлично. Благодаря! – xdhmoore