如何使用Playframework在运行时渲染替代视图?

时间:2015-01-07 16:32:16

标签: playframework playframework-2.3

基于查询参数的存在,我想呈现我的数据的JSON视图,而不是默认的html视图。所有模板在全球范围内实现这一目标的最佳方式是什么?

例如,而不是

def index = Action {
  val foo = getFoo()
  Ok(views.html.index(foo))
}

我想选择性地显示foo的Jsonified版本(使用Gson或类似的库)。这对于只想查看所有可用数据而不是依赖代码完成的前端开发人员特别有用(在我们当前的自定义框架中可能)。

我查看了过滤器和动作组合,但似乎无法访问视图的原始参数。

编辑:在Spring MVC中,这将使用ViewResolver和自定义弹簧视图实现,该视图实现以下方法

void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception;

然后将模型转换为JSON就很简单......

感谢。

1 个答案:

答案 0 :(得分:0)

虽然我还没有能够使用自定义视图,但我确实创建了一个自定义模板,用于执行数据的json视图的console.log

@(any: Any, name: String = "json")
@import services.Serializers.gson

@if(play.Play.isDev){
    <script type="application/javascript">
    var json=@Html(gson.toJson(any));
    console.log("@name: " , json);
    </script>
}

我使用了这里定义的自定义gson序列化程序:https://gist.github.com/raelg/e12d731ba01ba58f0006