在Play框架1.2.4 Controller中,是否可以在输出到浏览器之前将模板或标签的内容作为String获取?
我希望能够做到这一点:
String json = renderAsString("/path/to/template.json", var1, var2);
//then use json as the body of a Play.WS request body.
答案 0 :(得分:3)
解决方案基于您所说的PlayFramework 1.x
的假设如果您使用Groovy template engine:
Map<String, Object> args = ...
Template template = TemplateLoader.load("path/to/template.suffix");
String s = template.render(args);
如果您使用Rythm template engine:
,则可以使用快捷方式String s = Rythm.render("path/to/template.suffix", param1, param3...);
或者您也可以使用命名参数:
Map<String, Object> args = ...
String s = Rythm.render("path/to/template.suffix", args);
注意如果您的模板文件放在app/rythm
文件夹下,Groovy方式也适用于Rythm。
答案 1 :(得分:0)
除了green answer 。
如果您想要创建一个json,那么最好使用gson而不是使用groovy模板构建自己的字符串。 Gson包含在Play Framework 1.2.X中。
您可以找到更多信息here。 Gson doc的例子:
class BagOfPrimitives {
private int value1 = 1;
private String value2 = "abc";
BagOfPrimitives() {
// no-args constructor
}
}
BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);
//json is {"value1":1,"value2":"abc"}
您也可以使用Flexjson代替gson。