k使用把手java和ratpac

时间:2016-12-07 11:29:25

标签: java json ratpack handlebars.java

我正在创建一个测试应用程序,它只是创建一个对象的JSON表示并将其发送到模板,然后我想在前端的JS脚本中使用JSON。我正在使用Ratpack和Java Handlebars来做到这一点。

这是我的Ratpack处理程序

class HighChartHandler extends InjectionHandler {

    void handle(Context ctx, TestDataJson testDataJson) {
        testDataJson.goals = 1000
        testDataJson.name = "Nick"
        def jsonData = json(testDataJson)
        ctx.render(handlebarsTemplate('highchartTest.html', model: jsonData))
    }
}

然后我尝试使用

简单地在页面上呈现数据
<h1>Graph Test</h1>
<p>This is a WIP highchart test</p>
<p>{{model}}</p>

但是我收到了这条消息:

ratpack.jackson.internal.DefaultJsonRender@467db85c

我想简单地渲染类似

的东西
{"name":"Forlan","goals":1000}

2 个答案:

答案 0 :(得分:1)

您正在使用的方法Jackson.json(Object) https://ratpack.io/manual/current/api/ratpack/jackson/Jackson.html#json-java.lang.Object-,其返回类型为JsonRender https://ratpack.io/manual/current/api/ratpack/jackson/JsonRender.html

所以当你在模板中运行时,它只是调用“JsonRender#toString()which results in what you're seeing: ratpack.jackson.internal.DefaultJsonRender @ 467db85c`

Jackson.json方法将Ratpack中已知的内容返回为Renderer。它告诉Ratpack如何表示您提供给Renderer的对象。

为了生成与html混合的json,我会做这样的事情:

def jsonData = new groovy.json.JsonOutput.toJson(testDataJson)
ctx.render(handlebarsTemplate('highchartTest.html', model: [model: jsonData]))

我没有对此进行过测试,但它应该有效。

答案 1 :(得分:-1)

尝试使用

<p>Name: {{name}}</p>
<p>Goals: {{goals}}</p>

而不是

<p>{{model}}</p>