Нет ничего особенного для этой цели. Вы можете сделать это, если хотите напечатать простую строку:
<script>
var user = "${session.user?js_string}";
</script>
и аналогично var someNumber = ${session.someNumber?c};
для числа. Но нет встроенного решения для сброса составных объектов.
Мне было интересно, было бы хорошей идеей добавить ?json
во FreeMarjer, который преобразует произвольный объект в JSON (также допустимый JavaScript), но это очень важно для безопасности. Вы выкидываете содержимое объекта рекурсивно в клиент ... Когда разработчики добавляют геттеры в класс, им не обязательно осознавать, что шаблон будет проходить через весь объектный граф, открывая его.
Но вы можете добавить метод к модели данных или в качестве совместно используемой переменной к синглтону Configuration
, который это делает. var something = ${toJS(session.something)};
. (Или на самом деле, #macro
может сделать это тоже, но это уродливее и несколько медленнее.) Но подумайте, как вы будете держать в руках то, что выставлено клиенту.