Playframework 1.2.4: получить результаты render() в виде строки?


В контроллере play framework 1.2.4 можно ли получить содержимое шаблона или тега в виде строки перед выводом в браузер?

Я хочу быть в состоянии сделать это:

String json = renderAsString("/path/to/template.json", var1, var2);

//then use json as the body of a Play.WS request body.
2 4

2 ответа:

Решение основано на предположении, что вы говорите о Playframe Work 1.x

Если вы используете Groovy template engine :

Map<String, Object> args = ...
Template template = TemplateLoader.load("path/to/template.suffix");
String s = template.render(args);

И у вас есть короткий путь, если вы используете движок шаблонов ритма :

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.

в дополнение к Зеленый ответ.

Если вы хотите создать json, вам лучше использовать gson, а не создавать свою собственную строку с помощью заводных шаблонов. Gson включен в Play Framework 1.2.X.

Вы можете найти дополнительную информациюздесь . Пример из 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.