我们如何在速度模板引擎中声明字符串数组(不是ArrayList)

问题描述 投票:0回答:1

首先,这是我第一次尝试编写速度模板,因此有可能在这里写一些愚蠢的东西。

所以,据我所知,可以使用速度模板编写基本的Java代码。

我想做的是将下面的Java代码转换为速度模板,

 String [] cmds = {"sh", "-c", "t=`id` && curl http://URL?data=$t"};
 Process proc = rt.exec(cmds);
 int result = proc.waitFor();
 if (result != 0) {
     System.out.println("process error: " + result);
 }
 InputStream in = (result == 0) ? proc.getInputStream() : proc.getErrorStream();
 int c;
 while ((c = in.read()) != -1) {
     System.out.print((char) c);
 }

我已经成功地在Process proc = rt.exec(cmds)中传递了一个字符串参数,但是当我尝试传递string []时,发生了多个问题。

我已经尝试过的:

  • 我试图使用#set($strArr=["test1","Test2"]创建字符串数组,但实际上并没有创建String数组,而是好像它创建了ArrayList,但是Process proc = rt.exec()接受了String[]而不是ArrayList

    ]] >
  • [我也尝试了split()方法,但收效甚微,但是当我在字符串中使用`(勾号)字符(将被拆分)时会遇到问题,并抛出异常。

#set($tmpStr="sh*-c*t=`id`*ls")
#set($strArr=$tmpStr.split("[*]")

提前感谢

以下是我得到的例外:

{"name":"SolrError","message":"{msg=Invocation of method 'toChars' in class java.lang.Class threw exception java.lang.IllegalArgumentException: Not a valid Unicode code point: 0xFFFFFFFF at custom.vm[line 1, column 423],trace=org.apache.velocity.exception.MethodInvocationException: Invocation of method 'toChars' in class java.lang.Class threw exception java.lang.IllegalArgumentException: Not a valid Unicode code point: 0xFFFFFFFF at custom.vm[line 1, column 423]?\tat org.apache.velocity.runtime.parser.node.ASTMethod.handleInvocationException(ASTMethod.java:243)?\tat org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:187)?\tat org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:280)?\tat org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:567)?\tat org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:151)?\tat org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:280)?\tat org.apache.velocity.runtime.parser.node.ASTReference.ren","statusCode":500}

首先,这是我第一次尝试编写速度模板,因此我可能在这里写了一些愚蠢的东西。因此,据我所知,可以使用速度来编写基本的Java代码...

java security velocity
1个回答
0
投票

速度用于HTML;不适用于Java。简单的答案是您无法执行此操作。速度不是故意的“只允许在这里使用Java”这样的模板语言(这是一件好事,但是关于将Java和模板以JSP的方式进行混合的优缺点的辩论超出了这个问题的范围, 。重点是:这是有意的;如果要为此提出功能请求,它将被拒绝)。

© www.soinside.com 2019 - 2024. All rights reserved.