2

我正在尝试在 Google App Engine/Java devserver (GAE/J) 上使用Rythm 模板引擎。这是一个简单的安装,除了 Rythm 添加到基本 GAE 开发服务器。

问题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 示例中复制和粘贴的):

// 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 (有没有更好的方法来共享堆栈跟踪?)

需要帮忙!

以下是版本:

  • 盖伊:1.8.7
  • Maven:3.1.1
  • 节奏:1.0-b11-SNAPSHOT
  • 操作系统:OS X 10.9
4

1 回答 1

1

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

于 2014-01-09T10:02:10.660 回答