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 文件的示例。上面,我添加了从 servlet 呈现此页面所需的内容。

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

2 回答 2

1

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

于 2014-05-21T01:23:09.000 回答
0

每当 ST 文件中出现错误并且其实例被调用时,都会发生空指针异常,因此始终可以诊断 ST 文件。

于 2019-05-15T09:54:26.023 回答