Как написать сценарий scala непосредственно на страницах JSP?

Есть ли какой-либо scala JSP механизм или там будет кем-либо? я знаю о scala веб-лифте платформы, но он больше походит на теги. я ищу способ написать сценарий как PHP.

спасибо.

8
задан Brodie 29 January 2010 в 05:38
поделиться

3 ответа

Редактировать: чек http://scalate.fusesource.org/index.html : Scala Template Engine: как JSP без дерьма, но с Добавлена ​​Scala Cool azy . Я просто наткнулся на это во время проверки корма #scala Twitter.


Вы можете взглянуть на http://github.com/alandipert/step . Он выглядит как активный проект с достаточно, чтобы позволить вам написать Scala Code, смешанный с XHTML-кодом. Могу ли вы скрипт, как PHP , я не знаю. Одно из разных состоит в том, что с JSP / PHP вы включаете программу внутри HTML-страницы, где как с помощью Step , вы включаете некоторые XML в Scala файл.

Здесь будет немного кривой обучения со скальдой и SBT , но я думаю, что это стоит воспользоваться преимуществами Scala.

Другая вещь, которую вы можете сделать, это написать пользовательский тег JSP, который позволяет запустить несколько Scala Code через интерпретатор. Я сделал доказательство концепции, и это, кажется, работает:

/**
 * Proof of concept, you can run Scala code in a JSP tag.
 * Works with jetty and sbt.
 */
class ScalaScriptTag extends BodyTagSupport {

  override def doAfterBody():Int = {
    try { 
      val settings = new Settings(str => println(str))
      // interpreter classloader does not seem to pick up classes from the parent
      settings.classpath.value = 
        "lib_managed/compile/jsp-api-2.1-6.1.14.jar;" + 
        "lib_managed/compile/servlet-api-2.5-6.1.14.jar"
      var i = new Interpreter(settings) {
        override def parentClassLoader():ClassLoader = {
          return Thread.currentThread().getContextClassLoader();
        }
      }
      i.bind("pageContext", "javax.servlet.jsp.PageContext", pageContext)
      val source = Source.fromString(getBodyContent.getString)
      for (line <- source.getLines) { i.interpret(line) }
    } catch {
      case ioe: IOException => 
        throw new JspException(ioe.getMessage())
    }
    Tag.SKIP_BODY
  }

}                       
5
ответ дан 5 December 2019 в 19:00
поделиться

http://www.playframework.org/ имеет режим Scala. Игра - это очень рельсы-иш. Может удовлетворить ваши потребности.

1
ответ дан 5 December 2019 в 19:00
поделиться

Scalate - это шаблонизатор на основе Scala, который позволяет использовать мощные выражения Scala вместо ограниченного языка выражений JSP / JSF / JSTL EL - в то время как полностью статически типизированы, поэтому шаблоны проверяются на наличие ошибок во время редактирования / компиляции.

Шаблоны Scaml в Scalate позволяют писать действительно СУХИЕ шаблоны, которые особенно хороши для XML / HTML (поклонники Rails склонны любить Haml, а Scaml - это порт Haml на Scala).

Хотя, если вам нравится стиль шаблонов JSP, вам, вероятно, лучше начать с шаблонов Ssp в Scalate, которые похожи на JSP.

3
ответ дан 5 December 2019 в 19:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: