2014-05-20 42 views
0

我想使用StringTemplate 4在我的Google App Engine應用程序中呈現視圖。爲什麼我會用看似簡單的StringTemplate代碼來得到一個NullPointerException?

在我的控制器(我使用它是否重要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代碼時,它似乎與文件的路徑有關。通過瀏覽器訪問模板文件的路徑。

這裏是異常的相關部分:

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

回答

1

事實證明,我的page.st文件的格式不正確。在這種情況下,您可以獲得NullPointerException。我已更新我的問題,以包含適當的page.st格式。

+0

它適合我。謝謝 –

相關問題