为什么我看到一个看似简单的StringTemplate代码的NullPointerException?

时间:2014-05-20 20:59:11

标签: java google-app-engine stringtemplate-4

我想使用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

中有一个名为war/templates/default的ST文件

当我运行此代码时,我得到以下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文件的示例。上面,我已经添加了从servlet呈现此页面所需的内容。

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

2 个答案:

答案 0 :(得分:1)

事实证明,我的page.st文件格式不正确。在这种情况下,您获得NullPointerException。我已经更新了我的问题,以包含page.st。

的正确格式

答案 1 :(得分:0)

只要ST文件中存在错误并且实例被称为Null Pointer Exception(空指针异常),则总是可以诊断ST文件。