是否有任何 scala JSP引擎,或者是否会有任何? 我知道scala web框架提升,但它似乎更像标签. 我正在寻找像 PHP这样的脚本的方法. 谢谢. 编辑:检查 http://scalate.fusesource.org/index.html:Scala模板
我知道scala web框架提升,但它似乎更像标签.
我正在寻找像 PHP这样的脚本的方法.
谢谢.
编辑:检查 http://scalate.fusesource.org/index.html:Scala模板引擎:像没有垃圾的JSP但添加了Scala的酷感.我在查看#scala twitter feed时偶然发现了这一点.你可以看看http://github.com/alandipert/step.它看起来像一个活跃的项目,足以让你编写混合了xhtml代码的Scala代码.你是否可以像PHP一样编写脚本,我不知道.其中一个不同之处在于,使用JSP / PHP,您可以在HTML页面中包含一个程序,与步骤一样,您可以将一些xml包含在Scala文件中.
Scala和sbt
会有一些学习曲线,但我认为利用Scala是值得的.
您可以做的另一件事是编写一个自定义JSP标记,它允许您通过解释器运行一些Scala代码.我做了一个概念证明,这似乎有效:
/** * 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 } }