0

我正在填充一个模型(页面),其中一个字符串属性(内容)包含 Scala 模板代码:

<img src="@routes.Assets.at("images/image.gif")" alt="alt text" />

在我的 Scala 模板中,我传入了模型:

@(page: models.Page)
@Html(page.getContent())

正如预期的那样,@routes.Assets.at 没有解析为资产路径。

  1. Play 2.0 中是否有 eval() 类型的实用程序函数来实现此目的?
  2. 或者,我可以从控制器内部导出资产路由表示的实际路径吗?然后我将随后执行字符串替换

编辑 - 提供更多上下文:

控制器代码:

ObjectMapper mapper = new ObjectMapper();
Page page = new Page();
// TODO: request().uri() mapping to json resource
File x = Play.current().getFile("/content/index.json");
try {
    page = mapper.readValue(x, Page.class);
} catch (JsonParseException e) {
    e.printStackTrace();
} catch (JsonMappingException e) {
    e.printStackTrace();
} catch (IOException e) {
    return notFound();
}

型号代码:

public void setContent(String content) {
    // TODO: replace to resolve assets route
    this.content = StringEscapeUtils.unescapeHtml4(content);
}

感谢任何解决方案或对方法的评论。

谢谢

4

1 回答 1

1

你应该意识到一件基本的事情:你根本不需要使用@routes.Assets.at()它——它只是一个助手,但没有特殊意义。因此,只需将已解析的路径放入您的代码中:

 <img src="/assets/images/image.gif" alt="alt text" />

如果您真的非常想保持动态路径在代码中使用自己的标记的可能性,您可以轻松地替换replace()方法:

 <img src="###ASSETS_FOLDER###/images/image.gif" alt="alt text" />

(当然这是默认位置,如果您有其他位置,请更改它)

于 2012-10-23T15:51:03.850 回答