Ale*_*xey 5 java stringtemplate
有人可以解释为什么这不起作用?
StringTemplate query = new StringTemplate("hello " +
"$if(param==\"val1\")$" +
" it works! " +
"$endif$ " +
"world");
query.setAttribute("param", "val1");
System.out.println("result: "+query.toString());
Run Code Online (Sandbox Code Playgroud)
它抛出
eval树解析错误:0:0:org.antlr.stringtemplate.language.ActionEvaluator.ifCondition(ActionEvaluator.java:815)org.antlr.stringtemplate.language.ConditionalExpr.write(ConditionalExpr.java:99)中子树的意外结束)
Ter*_*arr 12
ST不允许在模板中进行计算.这将使其成为模型的一部分.
不幸的是,您无法在 stringtemplate 中比较字符串,但您可以将此类比较的结果作为参数发送到模板中:
StringTemplate query = new StringTemplate("hello " +
"$if(paramEquals)$" +
" it works! " +
"$endif$ " +
"world");
query.setAttribute("paramEquals", param.equals("val1"));
System.out.println("result: "+query.toString());
Run Code Online (Sandbox Code Playgroud)
它可能不是您想要的,因为每次需要添加比较时,您都必须传递一个额外的参数,而 for 循环则更糟。但这是一种适用于简单情况的解决方法。
| 归档时间: |
|
| 查看次数: |
5649 次 |
| 最近记录: |