我正在学习使用StringTemplate 4,并尝试从数据库中提取一个简单字符串并创建一个模板。我使用类似于以下的方法:
STGroup group = new STGroupString(null, someTemplateString, '$', '$');
ST st = group.getInstanceOf(someTemplateName);
st.add(someAttribute, someValue);
如果我定义的属性与模板someTemplateName
相同或少于它,那么一切都正常。但是,如果我尝试添加一个不存在的属性,就会出现以下异常:
no such attribute: fake
java.lang.IllegalArgumentException: no such attribute: fake
...
这是有意义的。然而,似乎我无法事先知道为模板someTemplateName
定义了哪些属性。我希望能找到像下面这样的内容:
bool isDef = st.isDefined(someAttribute);
但是没有这样的方法。我是正确的吗?有什么解决办法吗?
st.impl.formalArguments
只会给出你在模板中定义的参数,而不会给出所使用属性的名称。 - Matthijs Bierman