ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 如何在Thymeleaf中将控制器中的JSON值传递给HTML?

2019-05-28 13:24:26  阅读:1093  来源: 互联网

标签:jquery json javascript spring-mvc thymeleaf


我尝试使用DataTables做“服务器端分页”.我正在按照本教程完成“http://javahonk.com/spring-mvc-pagination-datatables/”.它使用JSP作为他们的html语言.我在这里使用的是“Thymeleaf”

但是当我试图这样做时,我坚持JSON值已经生成,但它出现在我的控制台中,不会显示在我的HTML页面中

这是我的控制器:
SpringMVCController.java

@RequestMapping(value = "/barangs", method = RequestMethod.GET, produces = "application/json")
public String processFindBarang(HttpServletRequest request) {

//Fetch the page number from client
Integer pageNumber = 0;
if (null != request.getParameter("iDisplayStart"))
    pageNumber = (Integer.valueOf(request.getParameter("iDisplayStart"))/10)+1;     

//Fetch search parameter
String searchParameter = request.getParameter("sSearch");

//Fetch Page display length
Integer pageDisplayLength = Integer.valueOf(request.getParameter("iDisplayLength"));

//Create page list data
Collection<ReturOrder> returList = createPaginationData(pageDisplayLength);

ReturObjectJson returJsonObject = new ReturObjectJson();
//Set Total display record
returJsonObject.setiTotalDisplayRecords(200);
//Set Total record
returJsonObject.setiTotalRecords(200);
returJsonObject.setAaData(returList);

Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json2 = gson.toJson(returJsonObject);

return json2;

}

它已经很好地返回了JSON,它出现在我的“控制台”区域,同时在我的Eclipse IDE中进行调试

这是我的HTML页面. main.html中

<form method="GET">
<h2>Spring MVC pagination using data tables</h2>
<table width="70%" style="border: 3px;background: rgb(243, 244, 248);"><tr><td>
<table id="tablepage" class="display" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>Nomor_Transaksi</th>
                <th>Tgl_Trans</th>
                <th>FlagCetak</th>
                <th>Kd_Plg</th>
            </tr>
        </thead>   
    </table>
    </td></tr></table>
</form>

这是我在区域的JavaScript

<script type="text/javascript" th:inline="javascript">

    //Plug-in to fetch page data
jQuery.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )
{
return {
"iStart":         oSettings._iDisplayStart,
"iEnd":           oSettings.fnDisplayEnd(),
"iLength":        oSettings._iDisplayLength,
"iTotal":         oSettings.fnRecordsTotal(),
"iFilteredTotal": oSettings.fnRecordsDisplay(),
"iPage":          oSettings._iDisplayLength === -1 ?
0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),
"iTotalPages":    oSettings._iDisplayLength === -1 ?
0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )
};
};

$(document).ready(function() {

$("#tablepage").dataTable( {
        "bProcessing": true,
        "bServerSide": true,
        "sort": "position",
        //bStateSave variable you can use to save state on client cookies: set value "true"
        "bStateSave": false,
        //Default: Page display length
        "iDisplayLength": 10,
        //We will use below variable to track page number on server side(For more information visit: http://legacy.datatables.net/usage/options#iDisplayStart)
        "iDisplayStart": 0,
        "fnDrawCallback": function () {
            //Get page numer on client. Please note: number start from 0 So
            //for the first page you will see 0 second page 1 third page 2...
            //Un-comment below alert to see page number
         //alert("Current page number: "+this.fnPagingInfo().iPage);    
        },        
        "sAjaxSource": "barangs",
        "aoColumns": [
            { "mData": "Nomor_Transaksi" },
            { "mData": "Tgl_Trans" },
            { "mData": "FlagCetak" },
            { "mData": "Kd_Plg" },

        ]
    } );

} );

</script>

该值不会显示,它会在我的Web浏览器中执行时给出这些错误.它显示一个警告框,上面写着:“DataTables警告:表id = tablepage – Ajax错误.有关此错误的更多信息,请参阅http://datatables.net/tn/7

但是当我查看我的eclipse控制台时,JSON值如下:

    {
      "Nomor_Transaksi": "xxxxx",
      "Tgl_Trans": "Jan 15, 2014 12:00:00 AM",
      "FlagCetak": "Y",
      "Kd_Plg": "MGS                    "
    },
    {
      "Nomor_Transaksi": "xxxxx",
      "Tgl_Trans": "Jan 6, 2014 12:00:00 AM",
      "FlagCetak": "Y",
      "Kd_Plg": "MGS                    "
    }
  ]
}", template might not exist or might not be accessible by any of the configured Template Resolvers

我错过了吗?

解决方法:

找到了!我错过了@ResponseBody标签!

所以这是我的控制器功能

@RequestMapping(value = "/barangs", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody String processFindBarang(HttpServletRequest request) {

//Fetch Page display length
Integer pageDisplayLength = Integer.valueOf(request.getParameter("iDisplayLength"));

//Fetch the page number from client
Integer pageNumber = 0;
if (null != request.getParameter("iDisplayStart"))
    pageNumber = (Integer.valueOf(request.getParameter("iDisplayStart"))/pageDisplayLength)+1;      

/*  //Fetch search parameter
    String searchParameter = request.getParameter("sSearch");*/

//Create page list data
List<ReturOrder> returList = createPaginationData(pageDisplayLength, pageNumber);

ReturObjectJson returJsonObject = new ReturObjectJson();
//Set Total display record
returJsonObject.setiTotalDisplayRecords(200);
//Set Total record
returJsonObject.setiTotalRecords(200);
returJsonObject.setAaData(returList);

Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json2 = gson.toJson(returJsonObject);

return json2;
}

标签:jquery,json,javascript,spring-mvc,thymeleaf
来源: https://codeday.me/bug/20190528/1171114.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有