我正在尝试在Google App Engine / Java devserver(GAE / J)上使用Rythm template engine。这是一个简单的安装,只不过在基本GAE devserver中添加了Rythm。

问题Rythm template engine and GAE不能完全回答我的问题(答案中指向的源代码给出404错误)。

首先将以下代码添加到我的servlet代码中:

response.getWriter().println(Rythm.render("Successfully logged in as: @who",
                user.getNickname()));


我得到:

java.security.AccessControlException: access denied ("java.io.FilePermission" "/var/folders/91/nv5sbz412b188nk22m644mq80000gn/T/__rythm" "read")


我认为这是因为Rythm模板引擎尝试查找/var以查看是否将Rythm.render的第一个参数视为文件名,并且GAE抛出AccessControlException,因为您不应该访问战争之外的文件系统。

然后,我在调用Rythm.render之前添加了以下几行(这些基本上是从Rythm的HelloWorld example复制并粘贴的):

// use Map to store the configuration
Map<String, Object> map = new HashMap<String, Object>();
// tell rythm where to find the template files
map.put("home.template", ".");
// init Rythm with our predefined configuration
Rythm.init(map);


仍然得到同样的例外。更改“。”为“ /”,因为home.template的值给出:

access denied ("java.io.FilePermission" "/Successfully logged in as: @who" "read")


当我尝试:

map.put("home.template", this.getServletContext().getRealPath("/"));


我仍然得到同样的例外。为什么Rythm根本不看/var/folders/91/nv5sbz412b188nk22m644mq80000gn/T/__rythm?堆栈跟踪位于:https://drive.google.com/file/d/0B6dOUTDGuy2AWjR3Tmt2WTlkOUE/edit?usp=sharing(是否有更好的共享堆栈跟踪的方法?)

需要帮忙!

这些是版本:


GAE:1.8.7
Maven的:3.1.1
节奏:1.0-b11-快照
作业系统:OS X 10.9

最佳答案

您需要禁用engine.file_write配置以允许Rythm与GAE一起使用。检查有关http://rythmengine.org/doc/configuration.md#engine_file_write_enabled上配置的更多信息

07-28 02:45