我使用StringTemplate自动生成配置文件,如果用户尚未定义某些变量,这是一个错误。
StringTemplate会将未定义的变量(我的意思是$ var $)替换为空字符串,并且错误仍未发现。例如。:
some_property=$some_property$
呈现为:
some_property=
如果未使用显式定义模板中的变量,如何强制StringTemplate引发异常
StringTemplate.setAttribute(key, value)
?
最佳答案
使用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) { }
});
关于java - StringTemplate:如何检测模板中的变量是否未显式设置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24364355/