2017-11-16 1 views
0

freemarker를 사용하여 파일을 생성하고 있는데 templateExeptionHandler 부분에 어려움을 겪고 있습니다. 데이터 모델에없는 경우 템플릿에 변수를 바꿀 필요가 없습니다. 나는이 변수들을 같은 값을 가진 데이터 모델 안에 두는 것을 좋아하지 않는다. 그리고 나는 'escape' variables in the template itself을 할 수 있다는 것을 알고 있지만, 나는 그 솔루션을 정말로 좋아하지 않는다. 다음과 같이Freemarker가 누락 된 변수를 무시합니다.

MyTemplateExceptionHandler 보인다 :

class MyTemplateExceptionHandler implements TemplateExceptionHandler { 
public void handleTemplateException(TemplateException te, Environment env, Writer out) throws TemplateException { 
    try { 
    out.write("${" + te.getBlamedExpressionString() + "}"); 
    } catch (IOException e) { 
    throw new TemplateException("Failed to print error message. Cause: " + e, env); 
    } 
} 

}

문제는 그 난의 형태로 변수를 구문 분석하고있어 일단} {

$ workflow.input.myVariable을

내 생성 된 파일의 결과는 sh입니다. 이 변수의 첫 부분 때문에 :

$ {워크 플로우} 내가 다시 전체 변수를 얻을 내 생성 된 파일에 반환 할 수있는 방법에

어떤 생각?

답변

1

적어도 2.3.27 현재 사용 사례가 지원되지 않습니다. 누락 된 변수가 지시문의 매개 변수 인 경우 어떻게 작동해야하는지 명확하지 않습니다. 분명히 ${}의 경우 (심지어 문자가 문자열 리터럴 밖에 나타날 때만) 해결 될 수 있지만, 그 필요성을 해결하는지 확실하지 않거나 사용하기 위해 유혹 한 다음 나중에 지시어 매개 변수가있는 벽 ... (또는 또 다른 까다로운 경우, ${thisIsMissing + thisExists}은 무엇입니까? ${thisIsMissing + 123}과 같은 것이되어야합니다 ...이 오른쪽을 수행하면 코어가 상당히 복잡해질 수 있습니다.)

관련 문제