2010-06-11 2 views
1

Google AppEngine 내의 스칼라, StringTemplate을 사용하여 환경 설정을 멋지게 조정했습니다. 맵을 반복하면서 템플릿에 표시하는 데 문제가 있습니다. 내가 템플릿에 단지 문자열의 간단한 목록을 할당 할 때 사용하여 작동합니다 : 스칼라 서블릿에서Scala와 StringTemplate을 사용하여지도를 반복하는 방법

:

var photos = List[String]() 

    //... get photo url and title ... 

    photos = photo_url :: photos 
    template.setAttribute("photos", photos: _*) 

템플릿 :

$photos: { photo| 
    <div><img src="$photo$_s.jpg"></div> 
    }$ 

위의 작품. 그러나 url과 title을 사용하여 Map을 생성하고 템플릿에 할당하려고 시도하면 오류가 발생합니다.

를 스칼라 서블릿에서 : 템플릿에서

var photos = List[Map[String,String]]() 

    //... get photo url and title ... 

    photos = Map("url" -> url, "title" -> title) :: photos 
    template.setAttribute("photos", photos: _*) 

:

$photos: { photo| 
    <div><img src="$photo.url$_s.jpg" title="$photo.title$"></div> 
    }$ 

이 나에게

Class scala.collection.immutable.Map$Map2 has no such attribute: title in template context 

생각/다음과 같은 오류를 제공합니다 다음은 작동하지 않습니다 내 시도이며, 아이디어? 당신 같이


case class MyPhoto(@BeanProperty val url: String, @BeanProperty val title: String) 

def generateMyPhotos() : String = { 
    val tp = new StringTemplate("$photos: { photo|<div><img src=\"$photo.url$_s.jpg\" title=\"$photo.title$\"></div>}$") 
    val photos = List(MyPhoto("http://myphoto.com", "my photo")) 
    tp.setAttribute("photos", photos: _*) 
    tp.toString 
} 

이 StringTemplate의 scalasti 라이브러리를 사용하여 (나를 위해 일한 : 렉스의 제안에 위로 다음

+0

삭제 된 내 제안 :

지금의 StringTemplate 질문에 포함되어 있습니다 그 대신지도를 사용하면 작동하지 않습니다. Marcus에 따르면, "Class FlickrTestServlet $ TitleURL $ 2와 같은 오류가 발생합니다. 템플릿 컨텍스트의 제목 [templates/flickr_template if (photos) _subtemplate anonymous]"과 같은 오류가 발생합니다. –

답변

3

, 나는 그것이 분야에 대한 @BeanProperty 주석이있는 경우 클래스를 사용하여 작업 할 수 있었다 아마 이미 또한).

+0

신난다. 고맙습니다!! 그래, 난 StringTemplate에 대한 scalasti 래퍼를 사용하고 있습니다. 내가 한 일은 Bean Property import scala.reflect._에 대한 가져 오기를 추가하는 것뿐이었습니다. –

0

추가 패키지 및 특수 효과를 사용하지 않고 간단한 대안이 있습니다. 스칼라 객체 및 스칼라 컬렉션에서 속성 값을 검색하는 방법을 알고있는 스칼라 객체 어댑터를 등록합니다. (: 문자열, 제목 : 문자열 URL)`- 미안 그냥 여기 주목하는 그 '의 경우 클래스 TitleURL를 만드는 내 간단한 아이디어 http://www.antlr.org/wiki/display/ST4/Altering+property+lookup+for+Scala