JSON渲染引擎
/**
* 使用 FastJson 作为序列化工具的 Json 渲染器
* @version : 2016年1月3日
* @author 赵永春 (zyc@hasor.net)
*/
@Render("json")
public class JsonRender implements RenderEngine {
public boolean exist(String template) throws IOException {
return true;
}
public void process(RenderInvoker renderData, Writer writer) throws Throwable {
Object data = renderData.get(Invoker.RETURN_DATA_KEY);
JSON.writeJSONString(writer, data);
}
}
使用 Json 渲染器,execute 方法返回的对象使用 Json 渲染器自动序列化并输出给前端,同时设置 ContentType。
@MappingTo("/helloAction.json")
public class HelloAction {
@Produces("json")
public Object execute(RenderInvoker invoker) {
invoker.renderType("json");
return ...
}
}
进一步还可以利用 InvokerFilter
把设置渲染器的工作统一处理:
@MappingTo("/helloAction.json")
public class UseJsonInvokerFilter implements InvokerFilter {
public Object doInvoke(Invoker invoker, InvokerChain chain) throws Throwable {
((RenderInvoker)invoker).renderType("json");
return chain.doNext(invoker);
}
}