2010-01-29 20 views

risposta

5

Edit: controllo http://scalate.fusesource.org/index.html: Scala Template Engine: come JSP, senza la schifezza, ma con l'aggiunta di Scala Coolness. Mi sono imbattuto in questo mentre controllava il feed #scala su Twitter.


Si può dare un'occhiata a http://github.com/alandipert/step. Sembra un progetto attivo con quel tanto che basta per farti scrivere il codice Scala mescolato con il codice xhtml. Se è possibile lo script come PHP, non lo so. Una delle differenze è che con JSP/PHP, si include un programma all'interno di una pagina HTML dove, come per lo step, si include qualche xml in un file Scala.

Ci sarà un po 'di una curva di apprendimento con Scala e sbt ma penso che valga la pena di sfruttare Scala.

L'altra cosa che puoi fare è scrivere un tag JSP personalizzato che ti permetta di eseguire qualche codice Scala attraverso l'interprete. Ho fatto una prova di concetto e questo sembra funzionare:

/** 
* 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/ ha una modalità di scala. Il gioco è molto rails-ish. Potrebbe soddisfare le tue esigenze.

+1

La riproduzione supporta anche modelli scalari BTW tramite il modulo scalare: http://www.playframework.org/modules/scalate –

3

Scalate è un motore di template basato Scala, che permette di utilizzare potenti espressioni Scala al posto del linguaggio delle espressioni JSP/JSF/JSTL EL limitato - pur essendo completamente a tipizzazione statica in modo che i modelli vengono controllati a scrivi/compila il tempo per gli errori.

I modelli Scaml in Scalate consentono di scrivere placche davvero DRY particolarmente adatte per XML/HTML (i fan di Rails tendono ad amare Haml e Scaml è il porto di Scala di Haml).

Anche se ti piace lo stile dei modelli JSP, probabilmente starai meglio con i modelli Ssp in Scalate che sono simili a JSP.

Problemi correlati