/ / Eine Liste in eine Vorlage in lift - lift ausgeben

Ausgabe einer Liste zu einer Vorlage im Lift - Lift

Wie kann ich in Lift eine Liste von Dingen in einer Vorlage ausgeben?

Sagen wir zum Beispiel, dass ich habe Liste [Benutzer] und ich möchte es als Tabelle ausgeben. In Django würde ich eine Kontextvariable "users" verwenden und sie in der Vorlage wie folgt durchlaufen:

 //controller
user = User.objects.all()
context = {"users" : users}
return render_to_template("results.html", context}

//view
<table>
{% for user in users %}
<tr><td>{{user.name}}</td>
<td>{{user.email}}</td>
</tr>
{% endfor %}
</table>

Ich schätze jede Hilfe.

PS: Könnten Sie mir auch ein Beispiel für die Scala-Seite zeigen - da ich keine Ahnung habe, wie ich dieses Problem angehen soll.

Antworten:

5 für die Antwort № 1

Vorlage

<ul>
<lift:UserSnippet.showAll>
<li><foo:userName />: <foo:age /></li>
</lift:UserSnippet.showAll>
</ul>

Snippet-Klasse

Ich gehe davon aus users ist ein List[User].

import scala.xml.NodeSeq
import net.liftweb.util.Helpers

class UserSnippet {
def showAll(in: NodeSeq): NodeSeq = {
users.flatMap { user => Helpers.bind("foo", in, "userName" -> user.name, "age" -> user.age) }
}
}

Siehe die Lift-Wiki-Artikel auf Designerfreundliche Vorlagen und Schnipsel für mehr Informationen.


2 für die Antwort № 2

Wenn Sie eine reine Java-Liste verwenden möchten, sagen Sie eine ArrayList aus einem separaten Java-Aufruf ... Sie können dies auf diese Weise tun ...

Stellen Sie sicher, dass Sie die Java-Konvertierungen und Ihre Java-Klassendatei importieren, in der Ihre Liste erstellt wird

(Ich gehe davon aus, dass wir eine Liste von "Personen" -Objekten haben, die von Ihrer Java-Datei zurückgegeben werden, die einen Namen, ein Alter und Geschlechtseigenschaften enthalten würde.)

//SCALA Code

import scala.collection.JavaConversions._
import my.java.package.something._
import scala.xml.NodeSeq
import net.liftweb.util.Helpers

class mySnippet {

//You want to run the ".toList" on your java list, this will convert it into a scala list
val myScalaList = my.java.package.something.buildMyList().toList

//This is the function that will bind the list to the html view
def displayPeople(html : NodeSeq) : NodeSeq = {
myScalaList.flatMap{person => bind("info", html,
"name", person.name,
"age", person.age,
"sex", person.sex)}
}
}



//HTML code

<table>
<tr>
<td>Name</td>
<td>Age</td>
<td>Sex</td>
</tr>

<lift:mySnippet.displayPeople>
<tr>
<td><info:name></info:name></td>
<td><info:age></info:age></td>
<td><info:sex></info:sex></td>
</tr>
</lift:mySnippet.displayPeople>
</table>

Hoffe das hilft :)

-Kevin