Java PrintWriter没有刷新完整的String

时间:2014-08-21 12:02:18

标签: java io printwriter appfuse

我使用AJAX来检索外部系统的JSONP响应,但是响应是(因为缺少更好的工作)被截断。 我的前端页面将对URL进行AJAX调用,我的系统将生成一个响应,该响应被添加到PrintWriter,然后刷新Printwriter。但是,返回的内容不完整。

PrintWriter pw = response.getWriter();
pw.write(callBackFn);
pw.write("(" + requestsJSON + ")"); 
pw.flush();
pw.close();

请注意,回复约为120 000个字符。 我曾尝试寻找停产的原因但却没有找到类似的东西。

修改

public ActionForward getJSON(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        List requestList = RequestUtil.convertRequestsHashMapToRequestsList((HashMap)request.getSession().getServletContext().getAttribute(Constants.REQUESTS_CACHE_MAP));
        String requestsJSON = "";

        if (!requestList.isEmpty()) {
            Requests requestObj = (Requests) requestList.get(0);
            requestsJSON += "{\"key\":\"" + requestObj.getRequestId() + "\",\"value\":\"" + requestObj.getSubject() + "\"}";

            for (int i = 1; i < requestList.size(); i++) {
                requestObj = (Requests) requestList.get(i);
                requestsJSON += ",{\"key\":\"" + requestObj.getRequestId() + "\",\"value\":\"" + requestObj.getSubject() + "\"}";
            }
        }

        requestsJSON = "{\"values\":["+requestsJSON+"]}";
        String callBackFn = (String) request.getParameter("callback");

        System.out.println("#### Character length: " + (callBackFn + "(" + requestsJSON + ")").length());

        PrintWriter pw = response.getWriter();
        pw.write(callBackFn);
        pw.write("(" + requestsJSON + ")"); 
        pw.flush();
        pw.close();

        return null;
    }

注意:我添加上述方法的系统已经很老了而且没有维护。它是使用AppFuse 1.8.2(使用Spring 2)创建的,并且运行的是Java 1.4。 不幸的是,系统编写得不是很好,因此不能选择更新到Java的更高版本。

关于如何使用该方法返回的返回内容(JSONP String),它是无关紧要的。外部系统正在调用链接到此方法的URL,该方法返回字符串。

0 个答案:

没有答案