如何在Lift中输出模板中的事物列表?
例如,假设我有列出[用户] ,我想将其作为表格输出。在Django中,我将使用上下文变量“users”并在模板中迭代它,如下所示:
//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>
我感谢任何帮助。
PS:你能否向我展示一个scala方面的例子 - 因为我对如何处理这个问题一无所知。
答案 0 :(得分:5)
模板
<ul>
<lift:UserSnippet.showAll>
<li><foo:userName />: <foo:age /></li>
</lift:UserSnippet.showAll>
</ul>
Snippet Class
我假设users
是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) }
}
}
有关详细信息,请参阅designer friendly templates和snippets上的电梯维基文章。
答案 1 :(得分:2)
如果您正在寻找使用纯Java列表,请从单独的java调用中说出一个ArrayList ......您可以这样做....
确保导入java转换以及正在创建列表的java类文件
(我假设我们有一个从你的java文件返回的“人”对象列表,其中包括姓名,年龄和性别属性)
//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>
希望这会有所帮助:)
-kevin