Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Groovy TemplateEngines与大(>;64k)模板一起使用_Groovy - Fatal编程技术网

将Groovy TemplateEngines与大(>;64k)模板一起使用

将Groovy TemplateEngines与大(>;64k)模板一起使用,groovy,Groovy,如何使用SimpleTemplateEngine或GStringTemplateEngine处理大于65535个字符的模板 我收到以下错误: groovy.lang.GroovyRuntimeException:未能分析模板脚本(模板可能包含错误或试图使用当前不支持的表达式):启动失败: SimpleTemplateScript1.groovy:5614:字符串太长。给定的字符串长度为198495个Unicode代码单位,但最多只允许65535个 我正在使用以下代码构建模板: def templ

如何使用SimpleTemplateEngineGStringTemplateEngine处理大于65535个字符的模板

我收到以下错误:

groovy.lang.GroovyRuntimeException:未能分析模板脚本(模板可能包含错误或试图使用当前不支持的表达式):启动失败: SimpleTemplateScript1.groovy:5614:字符串太长。给定的字符串长度为198495个Unicode代码单位,但最多只允许65535个

我正在使用以下代码构建模板:

def templateEngine = new SimpleTemplateEngine()
def binding = [:]
templateEngine
    .createTemplate(new FileReader("input.txt))
    .make(binding)
    .writeTo(new FileWriter(new File("output.txt")))
我发现与此问题相关的吉拉3487

我考虑了输入的组块,但是这带来了它自己的并发症,比如确保不要在表达式中间中断。


如果有其他建议,我将不胜感激。

尝试使用
GStringTemplateEngine
。从javadoc:

处理模板源文件,替换变量和表达式 插入模板源文本中的占位符以生成所需的 使用流式方法输出。这台发动机有同等的发动机 SimpleTemplateEngine的功能,但创建模板 使用可写闭包使其在大型应用程序中更具可伸缩性 模板或在流式处理场景中


您可能只需将
新的SimpleTemplateEngine()
替换为
新的GStringTemplateEngine()
,就可以成功,但当然应该对其进行测试

GStringTemplateEngine
找到了一些替代品,它们可以处理大字符串


现在这是一个惊喜。在一些测试之后,如果模板中有一大块文本(>64K)不包含任何变量,那么它似乎失败了。至少,当变量分布到所有地方时,它在大约100K个文件上对我有效。但是,如果文本非常大(我在一个550K的文件中得到了这个文件,其中包含很多变量),那么与此类实现相关的另一个限制开始出现(方法太长)。真遗憾。这应该不太难做到,但似乎没有人对修复它很感兴趣。这里也有同样的问题。太糟糕了,这个问题无法解决。真糟糕。我不知道在寻找解决方案时我怎么会错过那个项目。显然,我的Google Fu需要工作。groovy-streaming-template-engine不适合我。对于我的大约250KB的模板,它失败了(java.lang.RuntimeException:方法代码太大!),与groovy内置的模板引擎完全相同。