0

StringTemplate 4 を使用して、Google App Engine アプリでビューをレンダリングしたいと考えています。

私のコントローラー(問題がある場合はSlim3 MVCフレームワークを使用しています)には、次のコードがあります:

STGroup group = new STGroupDir("templates/default",'$','$');
ST stPage = group.getInstanceOf("page");
stPage.add("title", "Welcome to my Page!");
stPage.add("title_h1", "So glad you came!");
response.getWriter().print(stPage.render());
return null;

page.stディレクトリに名前が付けられた単一のSTファイルがありますwar/templates/default

このコードを実行すると、次のようになりますNullPointerException。ST コードをオンラインで表示すると、ファイルへのパスに関連しているように見えます。テンプレート ファイルへのパスには、Web ブラウザからアクセスできます。

例外の関連部分は次のとおりです。

java.lang.NullPointerException
    at org.stringtemplate.v4.STGroup.loadTemplateFile(STGroup.java:656)
    at org.stringtemplate.v4.STGroupDir.loadTemplateFile(STGroupDir.java:176)
    at org.stringtemplate.v4.STGroupDir.load(STGroupDir.java:136)
    at org.stringtemplate.v4.STGroup.lookupTemplate(STGroup.java:230)
    at org.stringtemplate.v4.STGroup.getInstanceOf(STGroup.java:165)

編集:

ファイルのフォーマットが不適切であることがわかりました。page.st ファイルが有効な形式の場合、NullPointerException. 有効な page.st ファイルの例を次に示します。上記で、サーブレットからこのページをレンダリングするために必要なものを追加しました。

page(title,title_h1)::=<<
<!DOCTYPE html>
    <head>
      <title>$title$</title>
    </head>
    <body>
    <h1>$title_h1$</h1>
    </body>
</html>
>>
4

2 に答える 2