2011-05-13 6 views
3

리프트의 템플릿에있는 것들의 목록을 어떻게 출력 할 수 있습니까?리프트로 템플릿에 목록 출력

예를 들어 내가 [User] 목록을 가지고 있다고 가정 해 봅시다. 테이블로 출력하고 싶습니다. 장고, 난과 같이 템플릿에 그것을 통해 컨텍스트 변수 "사용자"를 사용하고 반복 것 :

//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> 

내가 어떤 도움을 주셔서 감사합니다.

추신 : 내게도이 문제에 접근하는 방법에 대한 단서가 없기 때문에 스칼라면의 예를 보여 줄 수 있을까요?

+1

이것은 실망 스럽습니다. 나는 어디서나이 문서를 찾을 수 없으며, 직관적이지도 않다. – drozzy

답변

5

템플릿

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

발췌문 클래스 내가 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 templatessnippets에 리프트 위키 기사를 참조하십시오. 당신이 순수 자바 목록을 사용하고자하는 경우

+0

NodeSeq의 네임 스페이스는 무엇입니까? 나는 리프트의 API에서 그것을 발견 할 수 없다. – drozzy

+0

또한 하나의 속성 userName을 매핑하는 방법 만 보여줍니다. "이메일"은 무엇입니까? 감사! – drozzy

+0

필자는 대답을 변경하여 import 문을 포함하고 여러 속성을 표시하는 방법을 보여주었습니다. Lift API에서 클래스를 찾을 수없는 경우 Scala API에 있거나 클래스가 Java 클래스 일 수도 있습니다. –

2

자바 변환을 가져올 수 있는지 확인합니다 .... 별도의 자바 호출에서 ArrayList에이 ... 당신이 이런 식으로 할 수있는 말을하고, 귀하의 목록이 생성되는 자바 클래스 파일

(이름, 나이 및 성 속성을 포함하는 Java 파일에서 반환되는 "people"객체 목록이 있다고 가정 함)

//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

+0

감사합니다. 스택 오버플로에 오신 것을 환영합니다! – drozzy

+0

오랜 시간 독자, 되돌릴 시작하는 시간. –