목차

Handlebars.java

SafeString

Handlebars는 헬퍼가 리턴한 값을 기본적으로 HTML Escape하지만, 헬퍼가 return할 때 이를 SafeString객체로 감싸서 리턴하면 HTML Escape을 하지 않는다. 물론, 해당 Escape에 대한 보안 책임은 헬퍼를 만든 프로그래머가 져야한다.

handlebars.registerHelper("blog-list", new Helper<List<Blog>>() {
  public CharSequence apply(List<Blog> list, Options options) {
    String ret = "<ul>";
    for (Blog blog: list) {
      ret += "<li>" + options.fn(blog) + "</li>";
    }
    return new Handlebars.SafeString(ret + "</ul>");
  }
});

Handlebar javscript precompile

Options

중첩 블럭(nested block)에서 상위 컨텍스트 참조

{{#each}} 같은 블럭 컨텍스트는 인자로 받은 객체를 새로운 컨텍스트로 만드는데, {{#each}}가 중첩해서 나오고, 상위 컨텍스트와 하위 컨텍스트에 동일 프라퍼티가 있을 경우 상위 컨텍스트 프라퍼티 접근이 어려울 수 있다.

이때는 ../propertyName 를 사용하면 상위 컨텍스트 프라퍼티에 접근 가능하다.

Handlebars 3.x 부터는 block 의 컨텍스트에 명시적으로 이름 지정이 가능해져서 상위 컨텍스트와의 이름 충돌 회피가 더 쉬워졌다.

Array/List by index

each with index / key