k使用 java 和 ratpac 将 JSON 发送到模板



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

这是我的鼠包处理程序

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}

您正在使用的方法,Jackson.json(Object)https://ratpack.io/manual/current/api/ratpack/jackson/Jackson.html#json-java.lang.Object-,其返回类型为JsonRenderhttps://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]))

我还没有测试过这个,但它应该可以工作。

尝试使用

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

而不是

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