2017-09-27 7 views
0

저는 Freemarker를 사용하지 않았으며 컴파일하지 않을 템플릿을 상속 받았습니다. 문제를 일으키는 선을 좁혔습니다.Freemarker 함수는 어디에 설정되어 있습니까?

${text('Text and {0}', 'More Text')} 

이 text() 함수의 출처는 어디입니까? 그 첫 번째로 입력 된 두 번째 문자열을 반환하려고 노력하는 것을 이해 : "텍스트 및 기타 텍스트". 여기

오류입니다 :

FreeMarker template error: 
For "...(...)" callee: Expected a method, but this has evaluated to an extended_hash (wrapper: f.t.SimpleHash): 

모더 나이저-2.6.2.js 가져온 유일한 자바 스크립트입니다.

왜이 줄이 문제를 일으키고이 함수를 선언해야하는가?

답변

0

그것은 몇 군데에서 올 수 있습니다 : 데이터-모델 Configuration에 추가되는 공유 변수에서

  • (매개 변수는 Template.process에 전달 중 하나)에서

    • 하나씩 일어나는 것. #include -d 템플릿에서

    • (또는 당신이있는 템플릿) (가능성은 희박 ...) #global text = ...를 통해 #import -ed 템플릿에서 #function text 또는 #assign text = ... (또는 #global text = ...)

    • 를 통해,

    그러나 하나의 잠재적 흥미로운 점은 오류가 text가 존재하는 것을 말한다이지만, 해시 (A Map -like 것)이 아닌 호출 것입니다. text라고도하는 것도 좋은 text의 그림자일까요? ${.data_model.text('Text and {0}', 'More Text')}의 내용은 무엇입니까?

    JavaScript 파일을 언급합니다. FreeMarker는 JavaScript와 아무런 관련이 없습니다 (JVM 내부의 서버에서 실행됩니다).

  • +0

    당신의 대답은 올바른 방향으로 인도합니다. 기본적으로 TemplateMethodModelEx를 구현하여 text()를 생성 한 다음 해당 클래스를 데이터 모델 (내 경우에는 해시 맵)에 배치하여 첫 번째 글 머리 점이되었습니다. 참조 : http://freemarker.org/docs/api/freemarker/template/TemplateMethodModelEx.html – MarkP