ST4 템플릿 안에 실행 가능한 자바 코드를 삽입 할 수 있습니까? 예를 들어 문자열을 그대로 내 템플릿에 전달하려고 할 때 가끔씩 문자열을 그대로 출력하고 때로는 대문자로 인쇄하기 때문에 필요한 변환을 수행하는 Java 코드가 필요합니다. 이 기능이 없으면 같은 기능을 수행하는 3 가지 방법이 있습니다 :템플릿 안에 자바 코드를 삽입하십시오.
(1) java에서 대체 값을 미리 계산하여 한 번에 모두 템플릿에 전달합니다 (그러나 너무 많은 인수가 발생할 수 있음) :
// in the below code, if the template can compute DESCRIPTION_CAPS from DESCRIPTION, using embedded java code, that reduces one argument
test(DESCRIPTION, DESCRIPTION_CAPS) ::= <<
this is original <DESCRIPTION>
this is caps <DESCRIPTION_CAPS>
>>
(2) 너무 많은 그런 논쟁이 될 경우, 다른 옵션은 작은 부분에 temlpate을 파괴하는 것입니다,하지만 그 추한 읽을 코드합니다 :
test1(DESCRIPTION) ::= <<
this is original <DESCRIPTION>
>>
test2(DESCRIPTION_CAPS) ::= <<
this is caps <DESCRIPTION_CAPS>
>>
(3) 클래스 내의 모든 관련 값을 미리 계산하고 템플릿에서 get ter 함수 (인수없이)를 사용하여 클래스에서 관련 값을 가져옵니다.
test() ::= <<
this is original <values.description>
this is caps <values.description_caps>
>>
지금부터 (포함 자바 클래스를 사용할 수없는 경우) 세 번째 옵션이 최상의 솔루션으로 보입니다. 더 나은 해결책이 있는지 조언하십시오.
참고 : 위의 예에서 CAPS를 예로 들었으므로보다 복잡한 Java 함수도 필요할 수 있습니다.