我正在使用StringTemplate自动生成配置文件,如果用户没有定义某些变量,那就是错误。
StringTemplate将用空字符串替换未定义的变量(我的意思是$ var $),并且错误将保持不被发现。 E.g:
some_property=$some_property$
呈现为:
some_property=
如果未使用
显式定义模板中的变量,如何强制StringTemplate引发异常StringTemplate.setAttribute(key, value)
答案 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) { }
});