Доступ к флеш-карте из шаблона Jade в Scalatra
Я создаю приложение, используя Scalatra, и я использую Scalate/Jade для шаблонов. Я пытаюсь добавить поддержку flash в свое приложение. Я смешал FlashMapSupport
в мой сервлет, и я могу получить доступ flash
помощник. В любом случае, если я пытаюсь получить его из макета, я получаю следующую ошибку:
[error] /home/ytaras/projects/scala/scalatra-shopping-cart/target/scala-2.10/src_managed/main/scalate/templates/layouts/default_jade.scala:27: not found: value flash
[error] flash.get("alert").foreach
[error] ^
[error] one error found
Лучшее, что я мог сделать, чтобы избежать этого, это использовать downcast для рендеринга контекста:
- context.asInstanceOf[org.scalatra.scalate.ScalatraRenderContext].flash.get("alert").foreach
- alert =>
.alert
.button(type="button" class="close" data-dismiss="alert") ×
= alert
Во всяком случае, это определенно не самое красивое решение. Что-то я могу сделать, чтобы это исправить, или это проблема в Scalate/Jade-коде?
1 ответ
Я только что сделал очень простое приложение Scalatra с использованием Jade, похоже, оно работает в соответствии с документами.
Изменить: я работал с приложением, созданным в более ранней версии Scalatra.
В Scalatra 2.2.0 мы добавили предварительно скомпилированные шаблоны Scalate в скелет g8, чтобы обеспечить дополнительную скорость производства по умолчанию. Там ошибка в project/build.scala
там, что приводит к потере флэш-контекста.
Добавьте это к вашему project/build.scala
: https://gist.github.com/anonymous/ff40cdde1a1105970f50
Мы исправим шаблон g8 на мгновение. Извините за беспокойство.