2009-06-22 11 views
8

Hat jemand versucht, eine Scala/Lift-Anwendung mit MVC statt View-First zu tun?MVC auf Lift/Scala

Ich weiß, dass Sie Controller/Ansichten wie erstellen:

package test.test.test.view 
... 
Lots of imports 
... 
class MvcRocks extends LiftView { 
    def dispatch = { 
    case "rule" => ruleDispatch _ 
    case "bar" => barDispatch _ 
    } 
    def barDispatch(): Box[NodeSeq] = { 
     Full(<lift:embed what="/mvc_rucks/bar" />) 
    } 
} 

Und dieser Code zugänglich sein wird, wenn Sie es zum Menü hinzufügen (im Kofferraum), auch wenn seine verborgenen als:

val entries = Menu(Loc("Home", List("index"), "Home")) :: 
List(Menu(Loc("MvcRock", List("mvc_rocks", "bar"), "Mvc really Rocks", Hidden))) 
LiftRules.setSiteMap(SiteMap(entries:_*)) 

Jetzt wird es natürlich so machen, Sie erklären jede Aktion im Menü, dann haben Sie einen Fall für jede Aktion (pro Controller) und das würde die "Ansicht" öffnen (das wäre eine Datei in/mvc_rucks /bar.html).

Meine Frage ist, wenn Sie eine vollständige MVC implementieren würden, müssten Sie alle Ihre Logik in die Aktion barDispatch setzen, aber wie würden Sie diese Variablen an die HTML-Vorlage senden? und wie würdest du Informationen erhalten/bekommen?

(Beachten Sie, dass, wenn Sie HTML-Code Lift-Bindungen hat, wird es natürlich als View-First, auch nachdem Sie MVC zuvor getan haben).

Antwort

9

Da Ihre Frage nicht spezifisch für Lift ist, empfehle ich Ihnen die Playframework. Die Version 1.1 unterstützt Scala 2.8.

Playframework ist völlig MVC mit einer fantastischen Template-Engine und erlaubt Ihnen, zwischen java/scala frei zu wählen.

Und ich sage: Um Play zu verwenden, brauchen Sie nicht "Kernwissenschafter Wissen". Versuch es!

+0

"Endlich ein Java-Framework von Web-Entwicklern. Entdecken Sie eine saubere Alternative zu aufgeblähten Enterprise-Java-Stacks." - das Spiel!" Hauptseite sagt. Ich wusste nie, dass so etwas existiert und träumte immer davon. Vielen Dank, Paulo. – Ivan

+0

Manche Entwickler vergessen manchmal, dass wir Einfachheit wollen :) Play ist eine der Antworten dafür. Ich suche etwas noch Einfacheres. Suchen Sie nach JTornado auf Github. Ich bin wirklich darauf konzentriert. Vielen Dank! – paulosuzart