2011-12-07 4 views
2

Freemarker 템플릿의 전체 데이터 모델을 JavaScript로 노출 시켜서 어딘가에있는 JS 오브젝트 리터럴로 변환하는 것이 쉬운 방법인지 궁금합니다.전체 Freemarker 데이터 모델을 JavaScript에 노출 하시겠습니까?

<#list .data_model?keys as key> 
    </#list> 

을 그리고 아마도 나는 다음과 같은 템플릿 내에서 글로벌 JS 변수를 만들 수 :

나는 키를 반복하는 방법을 알고?

답변

4

FreeMarker로 전체 데이터 모델을 탐색 한 다음 해당 JSON 객체에 대한 "소스 코드"를 생성 할 수 있지만 문자열 이스케이프 (예 : js_string builtin) 및 잠재적으로 큰 (재귀 적) 객체 그래프.

몇 년 전에 저는 FreeMarker 데이터 모델의 멋진 트리 표현을 인쇄하는 일반적인 데이터 모델 "dumper"를 작성했습니다. 아마 당신이 원하거나 필요로하는 것은 아니지만 어쩌면 그것은 영감입니다. 당신은 here을 찾을 수 있습니다.

+0

나는 솔루션에 대한 완전히 다른 길을가는 결국하지만이 도움 덕분입니다! – mattacular

+0

Chaquotay의 덤프에서 JSON 매크로를 만들었습니다. https://github.com/MajorLeagueBaseball/freemarker-json – sakabako

0

Jackson이나 다른 json API를 사용하여 객체를 json으로 변환 한 다음 json 문자열을 모델에 추가 할 수도 있습니다.

예 사용하여 스프링 MVC : 프리 마커에서

@RequestMapping(value = "/test", method = RequestMethod.GET) 
public ModelAndView test() throws Exception { 


    String output = new ObjectMapper().writer().withDefaultPrettyPrinter().writeValueAsString(new HashMap<String, Object>()); 

    Map<String, Object> model = new HashMap<>(); 
    model.put("result", output); 
    return new ModelAndView("page", "model", model); 
} 

$ {model.result은}

관련 문제