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>
>>