使用throw让服务器端与客户端进行数据交互[Java]

原文连接:http://www.javaspecialists.eu/archive/Issue129.htmlhtml

今天看到play的客户端渲染方法很特别: java

/**
     * Render a 200 OK application/json response
     * @param jsonString The JSON string
     */
    protected static void renderJSON(String jsonString) {
        throw new RenderJson(jsonString);
    }

怎么渲染是直接抛出一个异常呢?spring

查了一下才发现原来是用的服务器端直接抛出“实体异常”(这种可能不能叫一场了),由客户端渲染器进行捕获再进行渲染(这种形式不知道比spring的渲染器效率是否高一点)。json

这种思路好像颇有意思,因为正常的异常要填充stack trace,因此手动写了一个FastRuntimeException把填充方法fillInStackTrace给覆写了。服务器

同时,我也在stackoverflow上请教了一下:http://stackoverflow.com/questions/8500739/why-play-framework-simply-throw-a-new-render-in-controller-classapp

有兴趣的能够深刻研究一下。spa

相关文章
相关标签/搜索