Playframework 1.2.4:将render()的结果作为String?

时间:2012-05-02 01:55:37

标签: templates playframework playframework-1.x

在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.

2 个答案:

答案 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。