0

簡単な例を機能させようとしています。サンプル コードの .stg ファイルを次に示します。

group list-demo;

htmListExample(xmen) ::= <<
Example 5:
<html>
    <body>
    <h1>Original X-Men</h1>
        <ul>
            $xmen:listItem()$
        </ul>
        </body>
    </html>

    >>

    listItem() ::= <<
    <li>$it$</li>
>>

私のJavaコード:

STGroup group = new STGroupFile("/myTemplate2.stg",'$','$');
ST template = group.getInstanceOf("htmListExample");
List<String> xmen = Arrays.asList("Jean Gray", "Cyclops");
template.add("xmen", xmen);
System.out.println(template.render().toString());

そして出力:

 context [/htmListExample] 6:18 passed 1 arg(s) to template /listItem with 0 declared arg(s)
 context [/htmListExample] 6:13 passed 1 arg(s) to template /listItem with 0 declared arg(s)
 context [/htmListExample] 6:13 passed 1 arg(s) to template /listItem with 0 declared arg(s)
 context [/htmListExample /listItem] 2:5 attribute it isn't defined
 context [/htmListExample /listItem] 2:5 attribute it isn't defined
Example 5:
<html>
    <body>
        <h1>Original X-Men</h1>
        <ul>
            <li></li>
            <li></li>
        </ul>
    </body>
</html>

listItem() が認識されない理由について、誰かが光を当てることができますか? ST-4.0.7.jar を使用しています。

ありがとう

4

1 に答える 1

0

StringTemplate 4 では、map 演算子:はコレクションを 1 つの引数を取るテンプレートにマップします。テンプレートのit引数を宣言する必要があります。listItem

listItem(it) ::= <<
<li>$it$</li>
>>

出力に表示された警告には、次のように記載されています。

  1. listItemST4 は 1 つのパラメーターを持つテンプレートを予期していましたが、パラメーターを 0 つ取るテンプレートを渡しました。
  2. itパラメータを宣言していませんが、内で参照していますlistItem
于 2013-07-30T22:44:51.553 に答える