2010-01-07 2 views
1

freemarker를 사용하여 컬렉션을 반복하고 컬렉션의 각 항목의 속성을 출력 할 수 있습니까?freemarker 사용자 정의 모음을 출력하는 데 사용할 수 있습니까?

이 컬렉션 속성은 동적이거나 하드 코딩 할 수 없으므로 데이터베이스에서 생성됩니다.

내가 찾고있는 것 : 다른 데이터베이스를 가리킬 수 있어야하고 각 테이블을 반복하고 테이블 열을 출력하십시오.

답변

2

아마도 Java 토지의 데이터 구조가 무엇 이냐에 달려 있습니다. Freemarker는 컬렉션 (해시, 시퀀스)에 대한 기본 작업을 처리합니다. Java Map을 가지고 있다면, Freemarker는 "해시"(키를 직접 가져올 수 있음)처럼 사용할 수 있으며, Java의 목록은 Freemaker의 "시퀀스"처럼 보입니다. 테이블의 목록을 나타내는

당신이 말했다 자바의 경우 List<List<String>>, 당신은 FTL에서 그들을 걸을 수 좋아 : 귀하의 컬렉션 목록을 구현하지 않거나 사용자 정의 클래스 인 경우

<#-- getMyTables() is a call into the primary template model object --> 
<#assign myTables = getMyTables() /> 
<#list myTables as table> 
    <#list table as column> 
    ${column} 
    </#list> 
</#list> 

Map 인터페이스를 사용하면 메소드를 직접 액세스 할 수 있습니다 (Freemarker는 템플릿 모델에서 메소드의 직접 액세스를 지원하고 템플릿 모델에서 벗어날 수있는 모든 것을 지원합니다). 예 :

<#-- getMyTablesAsList() is a call into the primary template model object --> 
<#assign myTables = getMyTablesAsList() /> 
<#list myTables as table> 
    <#list table.getColumnNames() as column> 
    ${column} 
    </#list> 
</#list> 
+1

와우 (wow) 이것은 훌륭합니다. 최종 사용자를위한 안전 출력을 제공합니다. 보기 페이지에 삽입하는 클래스에만 액세스 할 수 있습니까? – mrblah

+0

예, freemarker에서 참조 할 수 있도록 객체를 수동으로 삽입해야합니다. – Chii

관련 문제