首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在最简单的情况下使用GAE/J: AccessControlException的Rythm模板引擎

在最简单的情况下使用GAE/J: AccessControlException的Rythm模板引擎
EN

Stack Overflow用户
提问于 2014-01-02 11:06:57
回答 1查看 218关注 0票数 2

我试图在Google /Java (GAE/J)上使用模板引擎。这是一个基本安装,除了Rythm之外,什么都没有添加到基本GAE devserver中。

Rythm模板引擎与GAE没有完全回答我的问题(答案中指出的源代码给出了一个404错误)。

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

代码语言:javascript
复制
response.getWriter().println(Rythm.render("Successfully logged in as: @who",
                user.getNickname()));

我得到了:

代码语言:javascript
复制
java.security.AccessControlException: access denied ("java.io.FilePermission" "/var/folders/91/nv5sbz412b188nk22m644mq80000gn/T/__rythm" "read")

我认为这是因为Rythm模板引擎试图在/var中查看是否将Rythm.render的第一个参数作为文件名对待,而GAE抛出AccessControlException,因为您不应该在war之外访问文件系统。

然后,我在调用Rythm.render之前添加了以下行(本质上是从Rythm的HelloWorld实例复制和粘贴的):

代码语言:javascript
复制
// 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的值,以"/“表示:

代码语言:javascript
复制
access denied ("java.io.FilePermission" "/Successfully logged in as: @who" "read")

当我试着:

代码语言:javascript
复制
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
  • Rythm: 1.0-b11-快照
  • OS: OS 10.9
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-09 10:02:10

您需要禁用engine.file_write配置,以允许Rythm使用GAE。查看有关已启用上的配置的更多信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20881565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档