【问题标题】:How to send a javascript array to Spring MVC controller如何将 javascript 数组发送到 Spring MVC 控制器
【发布时间】:2020-03-12 05:09:52
【问题描述】:

我正在尝试向 Spring MVC 控制器发送一个 javascript 数组。但我得到的是空值。

我的javascript代码:

for (var n = 1; n < rowCount; n++) {
            cells = rows[n].cells;
            data.push([
                cells[0].firstElementChild.checked,
                cells[1].firstElementChild.value,
                cells[2].firstElementChild.value,
                cells[3].firstElementChild.value,
                cells[4].firstElementChild.value
           ]);
}

$.ajax({
        url: 'addDetails.html',
        type:"POST",
        data:
{promo : data}

我的 Spring MVC 控制器请求映射:

@RequestMapping("/addDetails")
    public @ResponseBody void addEntity(
            @RequestParam(value="promo") List<String> promo) throws IOException {

我在 Requestmapping 中没有得到任何促销价值。请帮助我..谢谢!

【问题讨论】:

    标签: javascript java spring


    【解决方案1】:

    POST Body 可以在RequestBody 而不是RequestParam 中接收,其次,如果您像{promo: data} 这样传递您的数组,它将被转换为HashMap 或一些POJO 对象而不是数组列表,所以像这样直接传递数组:

    $.ajax({
            url: 'addDetails.html',
            type:"POST",
            data:data
    

    让你的控制器像:

    @RequestMapping("/addDetails", method = {RequestMethod.POST})
    public @ResponseBody void addEntity(
                @RequestBody List<String> promo) throws IOException {
    

    更新 如需更多数据,您可以创建一个 POJO 类:

    public class MyData{
        private String lname;
        private String lstate;
        private String lrta;
        private String lse;
        private List<String> promo;
    
       ... Getters and Setters
    }
    

    你的控制器应该是:

    @RequestMapping("/addDetails", method = {RequestMethod.POST})
    public @ResponseBody void addEntity(
                    @RequestBody MyData myData) throws IOException {
    

    【讨论】:

    • 我还有其他值可以将其发送到控制器。$.ajax({ url: 'addDetails.html', type:"POST", data:{ lname:lname, lname : document. getElementById('lname').value, lstate : document.getElementById('lstate').value, lrta : document.getElementById('lrta').value, lse : document.getElementById('lse').value, 促销:数据},
    • 如果你想让它们都发送一个请求,你可以创建一个类,然后将该对象传递给控制器​​,就可以了
    • @PUSHPARAJN 我已经更新了我的答案,请看一下
    猜你喜欢
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 2012-09-09
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2019-06-21
    相关资源
    最近更新 更多