在使用@Html()加载的代码中播放2.0@routes.Assets.at
我正在填充一个模型(页面),其中一个字符串属性(内容)包含Scala模板代码:在使用@Html()加载的代码中播放2.0@routes.Assets.at,routes,playframework-2.0,eval,assets,Routes,Playframework 2.0,Eval,Assets,我正在填充一个模型(页面),其中一个字符串属性(内容)包含Scala模板代码: <img src="@routes.Assets.at("images/image.gif")" alt="alt text" /> 正如所料,@routes.Assets.at未解析为资产路径 Play 2.0中是否有eval()类型的实用程序函数用于此目的 或者,我可以从控制器中导出由资产路由表示的实际路径吗?然后,我将执行一个字符串替换 编辑-要提供更多上下文,请执行以下操作: 控制器代码: Ob
<img src="@routes.Assets.at("images/image.gif")" alt="alt text" />
正如所料,@routes.Assets.at未解析为资产路径
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);
}
感谢对该方法的任何解决方案或意见
谢谢您应该意识到一件基本的事情:您根本不需要使用
@routes.Assets.at()
,它只是一个助手,但没有特殊意义。因此,只需在代码中输入解析路径:
<img src="/assets/images/image.gif" alt="alt text" />
(当然,这是一个默认位置,如果有其他位置,请更改它)为什么不在传递到模板之前解析路由?根据第二点。我猜想这会发生在控制器内部。但是如何计算呢?在计算字符串的控制器代码中,可以将其作为XML文本执行:
就是这样!谢谢实际上,我是在模型设定器上完成的,它似乎可以工作:this.content=StringEscapeUtils.unescapethml4(content.replaceAll(“#######资产##””,routes.ASSETS.at(““”.url());谢谢你们,我会接受你们的回答。是的,我可能不得不求助于那个。但是,如果有一个地方可以根据事物的精神来改变这种价值观,那就太好了:)啊,我的坏;当然,默认情况下,它是/assets/
而不是/public/
对不起,已修复。好的,但假设我只想在routes文件中设置/更改资产路径。i、 e.避免模型/控制器/其他地方的硬编码/重复路径。
<img src="/assets/images/image.gif" alt="alt text" />
<img src="###ASSETS_FOLDER###/images/image.gif" alt="alt text" />