1. 程式人生 > >關於Struts2框架下回傳JSON資料被打斷的問題

關於Struts2框架下回傳JSON資料被打斷的問題

在struts2的返回結果集做出瞭如下配置:

<package name="easyUIorder"  extends="json-default">
        <action name="queryList2" class="orderAction" method="query">
            <interceptor-ref name="params" />
            <result name="success" type="json">
                <!-- <param name="root">returnDataMap</param> -->
</result> </action> </package>

在action進行封裝時,利用工具類將結果集轉換成json串:

List<SortOrder> orders = new LinkedList<SortOrder>();
            if (StringUtils.isBlank(sort)) {
                orders.add(SortOrder.asc("id"));
            }
            else {
                orders.
add(new SortOrder(sort, asc)); } PagedList<Order> pList = orderService.findOrders(operationUserName, order, page - 1, rows, orders); Map map = new HashMap<>(); map.put("total", pList.getResultSize()); map.put("rows",pList.getList()); String
jsonStr=JsonUtil.writeValueAsString(map); ServletActionContext.getResponse().getWriter().write(jsonStr);

那麼此時json串回傳到頁面就出現了被打斷的情況。

分析:這裡我思考了很久才解決這個問題,因為之前一直使用註解很少採用配置檔案,所以有些配置也不是很清楚。這裡出現問題的主要原因還是因為進行了兩次JSON轉換。在action中把map轉換成JSON,然後在Struts2返回結果集的時候由於結果集型別設定為JSON型別,這裡會再次把回傳的資料JSON化一次。這樣的兩次轉換就把資料轉換成了打斷的JSON串。其實這個問題本身不難,只是沒想過來,希望其他的小夥伴遇到這個問題能夠通過這篇文章得以解決,避免浪費太多時間。