将列表输出到电梯中的模板

时间:2011-05-13 16:36:32

标签: lift

如何在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方面的例子 - 因为我对如何处理这个问题一无所知。

2 个答案:

答案 0 :(得分:5)

模板

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

Snippet Class

我假设usersList[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 templatessnippets上的电梯维基文章。

答案 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