扩展:JSON渲染引擎

  1. /**
  2. * 使用 FastJson 作为序列化工具的 Json 渲染器
  3. * @version : 2016年1月3日
  4. * @author 赵永春 (zyc@hasor.net)
  5. */
  6. @Render("json")
  7. public class JsonRender implements RenderEngine {
  8. public boolean exist(String template) throws IOException {
  9. return true;
  10. }
  11.  
  12. public void process(RenderInvoker renderData, Writer writer) throws Throwable {
  13. Object data = renderData.get(Invoker.RETURN_DATA_KEY);
  14. JSON.writeJSONString(writer, data);
  15. }
  16. }

使用 Json 渲染器,execute 方法返回的对象使用 Json 渲染器自动序列化并输出给前端,同时设置ContentType。

  1. @MappingTo("/helloAction.json")public class HelloAction { @Produces("json") public Object execute(RenderInvoker invoker) { invoker.renderType("json"); return }}

进一步还可以利用 InvokerFilter 把设置渲染器的工作统一处理:

  1. @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); }}