java - 为什么我使用看似简单的 StringTemplate 代码会收到 NullPointerException?

标签 java google-app-engine stringtemplate-4

我想使用 StringTemplate 4 在我的 Google App Engine 应用程序中呈现 View 。

在我的 Controller 中(如果重要的话,我正在使用 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;

我在目录 war/templates/default 中有一个名为 page.st 的 ST 文件

当我运行此代码时,我收到以下 NullPointerException。网上查看ST代码的时候,好像和文件的路径有关。可以通过网络浏览器导航到模板文件的路径。

以下是异常的相关部分:

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

最佳答案

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

关于java - 为什么我使用看似简单的 StringTemplate 代码会收到 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23769832/

相关文章:

java - XML-RPC在JAVA中连接Confluence

java - 如何在 linux 服务器上启动和调试 spring 应用程序?

python - 如何加载从特定部分 ID 开始的页面,使用 template.render() 使用 python,jinja2

java - 如何在 StringTemplate 中检索错误消息?

java - 将 List 中 Objects 的字段设置为相同的值并返回一个列表

java - 如何从类中绘制形状到小程序?

python - 405 不允许方法 - 在 Google App Engine 中获取请求,语言 Python

java - 在 Google App Engine 中使用 Java,如何从 int r、g、b 值的数组中制作 BMP 图像?

java - 字符串模板组文件可以使用资源吗?

razor - 与 StringTemplate4 相比,RazorEngine 3.3 的性能令人震惊