6

誰かがこれが機能しない理由を説明できますか?

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.ConditionalExpr.write(ConditionalExpr.java:99)のorg.antlr.stringtemplate.language.ActionEvaluator.ifCondition(ActionEvaluator.java:815)のサブツリーの予期しない終了)。

4

2 に答える 2

12

STは、テンプレートでの計算を許可していません。それはそれをモデルの一部にするでしょう。

于 2010-11-16T16:05:56.613 に答える
5

残念ながら、stringtemplate内の文字列を比較することはできませんが、そのような比較の結果をパラメーターとしてテンプレートに送信することはできます。

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

比較を追加する必要があるたびに追加のパラメーターを渡す必要があり、ループの場合はさらに悪化するため、これは探しているものではない可能性があります。ただし、これは単純なケースで機能する可能性のある1つの回避策です。

于 2012-07-04T11:40:58.263 に答える