2010-01-29 11 views

Respuesta

5

Editar: cheque http://scalate.fusesource.org/index.html: Scala Plantilla del motor: como JSP sin la porquería pero con agregado Scala frescor. Me tropecé con esto mientras revisaba el feed de #scala twitter.


Puedes echar un vistazo a http://github.com/alandipert/step. Parece un proyecto activo con solo lo suficiente para permitirle escribir el código Scala mezclado con el código xhtml. Si puede script como PHP, no sé. Una de las diferencias es que con JSP/PHP, incluye un programa dentro de una página HTML donde, como con step, incluye algunos xml en un archivo Scala.

Va a haber una curva de aprendizaje con Scala y sbt, pero creo que vale la pena aprovechar Scala.

Lo otro que puede hacer es escribir una etiqueta JSP personalizada que le permita ejecutar algunos códigos Scala a través del intérprete. Hice una prueba de concepto y esto parece que funciona:

/** 
* 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 
    } 

}      
1

http://www.playframework.org/ tiene un modo Scala. Jugar es muy complicado. Puede adaptarse a tus necesidades.

+1

Play también admite plantillas de Scalate mediante el módulo scalate: http://www.playframework.org/modules/scalate –

3

ScalateScalate es un motor de plantillas basado en Scala que le permite utilizar expresiones Scala potentes en lugar del lenguaje de expresión limitado JSP/JSF/JSTL EL, mientras se escribe estáticamente para que las plantillas se comprueben en tiempo de edición/edición para errores.

Las plantillas Scaml en Scalate le permiten escribir descripciones realmente SECAS que son particularmente buenas para XML/HTML (los fanáticos de Rails tienden a amar a Haml y Scaml es el puerto Scala de Haml).

Aunque si le gusta el estilo de las plantillas JSP, probablemente sería mejor comenzar con las plantillas Ssp en Scalate que son similares a JSP.

Cuestiones relacionadas