我有一个通过event.renderData(data=mydata, "json")
输出数据的事件。
当我通过浏览器访问它时,JSON数据会按预期返回。不过,如果我从另一个事件中调用该事件,我只会返回一个空字符串。我这样保存输出:
savecontent variable="local.eventResult" {
runEvent(event="mymodule:myhandler.myaction");
}
如果我在事件中转储数据,看起来没问题。我曾尝试通过return event.renderData(data=mydata, "json");
获取数据并直接返回数据,即return mydata;
,但没有成功。
我应该怎么做才能按预期获得数据?
我在ColdBox Slack频道上问了一个类似的问题,得到的回答是这种行为是故意的。不能使用renderData()
返回runEvent()
的输出。以下是我从Luis M收到的回复:
RenderData主要用于整理数据的请求,而不是事件如果您希望事件返回一些内容,那么只需使用
return
示例:
function test( event, rc, prc ) {
return "<p>MyViewlet</p>";
}
在您的示例中,如果您想将数据输出为JSON,您可以在处理程序中使用以下内容:
function myAction( event, rc, prc ) {
var myData = {
fruit = "apple",
vegetable = "carrot"
};
return serializeJSON( myData );
}