2014-06-23 2 views
0

StringTemplate을 사용하여 구성 파일을 자동 생성하고 사용자가 일부 변수를 정의하지 않은 경우 오류가 발생합니다.StringTemplate : tempate의 변수가 명시 적으로 설정되지 않은 경우 감지하는 방법은 무엇입니까?

StringTemplate은 정의되지 않은 변수 ($ var $)를 빈 문자열로 대체하며 오류는 감지되지 않습니다. 예컨대 :

some_property=$some_property$ 

는로 렌더링 :

some_property= 

어떻게 템플릿 변수가 명시 적으로

StringTemplate.setAttribute(key, value) 

사용하여 정의되지 않은 경우, 예외를 발생하는 StringTemplate을 강제로?

+0

StringTemplate <= 3을 사용하는 것 같습니다. StringTemplate 4로 마이그레이션 할 수 있습니까? –

+0

물론 그렇습니다. 내부 용입니다. –

답변

1

StringTemplate 4를 사용하면 오류 수신기에 정의되지 않은 특성이 있음을 알립니다. 사용자 정의 오류 리스너를 사용하면 필요에 따라이를 처리 할 수 ​​있습니다. 예 :

ST tmp = new ST("Hello <name>!"); 

    tmp.write(new NoIndentWriter(new StringWriter()), new STErrorListener() { 

     @Override 
     public void runTimeError(STMessage msg) { 
      if(msg.error == ErrorType.NO_SUCH_ATTRIBUTE) 
       System.out.println("Attribute not defined: "+ msg.arg); 
     } 

     @Override public void compileTimeError(STMessage msg) { } 
     @Override public void IOError(STMessage msg) { } 
     @Override public void internalError(STMessage msg) { } 
    }); 
+0

감사합니다. 지금 4.0.8로 마이그레이션하는 것은 너무 많은 재 작업이지만, 앞으로도 계속 투자 할 것입니다. 확실히) –

관련 문제