2012-09-04 3 views
0

HTML을 나타내는 문자열 (서버 측 요청을 통해 동적으로 가져옴)이 있습니다. 이 HTML에는 맞춤 재생 태그가 있습니다. 예를 들어 :play - 사용자 정의 태그에 전역 변수 추가

<html><body><div>#{myTag /}</div></body></html> 

지금, 나는이 태그에 변수를 전달하려면 :

Template playTemplate = TemplateLoader.loadString(myHtml); // the HTML above 
playTemplate.compile(); 

SomeObject myObject = SomeObject.find("name", "test").first(); 
Map<String,Object> args = new HashMap<String, Object>(); 
args.put("myObject", myObject); 
String result = playTemplate.render(args); 

그리고 내 사용자 지정 "myTag.tag"에서 코드는 다음과 같습니다

<p> 
    Hello world: ${myObject.name} 
</p> 

Exception raised was NullPointerException : Cannot get property 'name' on null object. 

:

는하지만 오류가 발생 객체가 null이 아닙니다. #{myTag /}을 HTML 문자열의 ${myObject.name}으로 바꾸면 모든 것이 잘 작동합니다! 어떻게 커스텀 태그에 객체를 전달합니까?

답변

1

귀하의 템플릿

<html><body><div>#{myTag obj: myObject/}</div></body></html> 

해야하며, 태그가 본질적으로

<p>Hello world: ${_obj.name}</p> 

해야합니다, 당신은 명시 적으로 태그를 템플릿 인수를 렌더링 통과해야합니다.

Rythm template engine은 암시 적 전달을 지원하지만 태그에 args를 렌더링합니다. Groovy 템플릿에서 찾을 수없는 많은 다른 기능을 제공합니다. 전체 데모보기 http://rythmengine.com

+0

감사합니다! 그것은 트릭을했다. Rythm 템플릿을 실제로 보았지만 나 또는 내 팀은 그 템플릿에 대한 경험이 없습니다. 생산 준비가 되었습니까? – Razzie

+0

여러 제품 프로젝트에서 사용 중입니다. 중국에서 적어도 하나의 큰 프로젝트는 제가 아는 한 그것을 많이 사용합니다. –

관련 문제