gpt4 book ai didi

java - StringTemplate 为给定模板定义的属性列表

转载 作者:搜寻专家 更新时间:2023-11-01 02:46:45 27 4
gpt4 key购买 nike

我开始使用 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);

但是没有这样的方法。我对么?有什么办法解决这个问题吗?

最佳答案

CompiledST 的文档states tokens 仅用于调试。不确定那是什么意思。

ST template = new ST("Hello <username>, how are you? Using <if(condition)>expression<endif> in condition works, and repeating <username> is not a problem.");
Set<String> expressions = new HashSet<String>();
TokenStream tokens = template.impl.tokens;
for (int i = 0; i < tokens.range(); i++) {
Token token = tokens.get(i);
if (token.getType() == STLexer.ID) {
expressions.add(token.getText());
}
}

为您提供字符串 usernamecondition

关于java - StringTemplate 为给定模板定义的属性列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20363331/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com