StringTemplate:如果未明确设置模板中的变量,如何检测?

时间:2014-06-23 11:07:20

标签: java string stringtemplate

我正在使用StringTemplate自动生成配置文件,如果用户没有定义某些变量,那就是错误。

StringTemplate将用空字符串替换未定义的变量(我的意思是$ var $),并且错误将保持不被发现。 E.g:

some_property=$some_property$

呈现为:

some_property=

如果未使用

显式定义模板中的变量,如何强制StringTemplate引发异常
StringTemplate.setAttribute(key, value)

1 个答案:

答案 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) { }
    });