gpt4 book ai didi

java - 如何让 StringTemplate V4 忽略 < 作为分隔符?

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

我正在使用 StringTemplate V4 在我的项目中生成一些 HTML 代码。我需要在我的模板中使用 HTML 格式,因此使用默认分隔符 <>会很尴尬。

因此,我正在创建一个组,将分隔符作为参数传递(如 this question 所推荐),但它根本不起作用。

这是我的测试代码:

public void testTemplate() {
char sep = '$';
STGroup stGroup = new STGroupString("temp",
"<html>hello, $name$!</html>", sep, sep);
System.out.println("Group created");
ST st = stGroup.getInstanceOf("temp");
if (st == null) {
System.out.println("Failed to get template!");
} else {
st.add("name", "Guest");
System.out.println("Template initialized correctly");
}
}

这是我得到的输出:

temp 1:1: invalid character '<'
temp 1:5: invalid character '>'
temp 1:1: garbled template definition starting at 'html'
temp 1:6: garbled template definition starting at 'hello'
temp 1:13: invalid character '$'
temp 1:18: invalid character '$'
temp 1:19: invalid character '!'
temp 1:21: invalid character '<'
temp 1:22: invalid character '/'
temp 1:14: garbled template definition starting at 'name'
temp 1:26: invalid character '>'
temp 1:22: garbled template definition starting at 'html'
Failed to get template!

我在这里错过了什么?

最佳答案

问题是提供给 STGroupString 构造函数的模板不是有效的“组模板”语法。

要获得不需要特殊语法的组模板,请尝试:

STGroup group = new STGroup('$', '$');
group.registerRenderer(...);
CompiledST compiledTemplate = group.defineTemplate("name", ...);
compiledTemplate.hasFormalArgs = false; // very important!

// later on...
ST template = group.getInstanceOf("name");

(以上是对我的 C# 代码的改编,所以 YMMV。我已尝试确保类型/名称有效且语法正确,但尚未验证。请根据需要随时更新/更正。)

快乐编码。

关于java - 如何让 StringTemplate V4 忽略 < 作为分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11146113/

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