Это может быть не то, что вы ищете, поскольку каждый раз, когда вам нужно добавить сравнение, вы должны передать дополнительный параметр, а для циклов это еще хуже. Но это один из обходных путей, который может работать для простых случаев.

кто-нибудь объяснить, почему это не работает?

StringTemplate query = new StringTemplate("hello " +  
                "$if(param==\"val1\")$" +  
                " it works! " +  
                "$endif$ " +  
                "world");  
        query.setAttribute("param", "val1");  
        System.out.println("result: "+query.toString());  

Это бросает

ошибка синтаксического анализа eval: 0: 0: неожиданный конец поддерева в org.antlr.stringtemplate.language.ActionEvaluator.ifCondition (ActionEvaluator.java:815) в org.antlr.stringtemplate.language.ConditionalExpr.write (ConditionalExpr.java:99 )

Ответы на вопрос(2)

Ваш ответ на вопрос