spring mvc传数组参数

今天传数组参数,居然不会用,记下来,加深印象。html

一、页面ajax默认传参java

function arrayParam(){
    var contextPath = $('#contextPath').val();
    var params = {};    
    params["names"] = ["张三", "李四", "王武"];
    params["ages"] = [20, 26, 48];
    
    var url = contextPath + "/array/getParamArray.do";    
    $.post(url, params, function(data){
        alert(data);
    });
}

controller层ajax

@RequestMapping(value="/getParamArray")
public String getParamArray(@RequestParam("names[]") String[] names, 
        @RequestParam("ages[]") int[] ages){
    
    LOG.info("getParamArray names={}, ages={}", Arrays.toString(names), Arrays.toString(ages));
    
    return "viewName";
}

二、ajax传数组参数,默认在参数名后面加[],这一点和表单传参不同,若是想和表单传参同样,能够以下数组

function arrayParam2(){
    var url = contextPath + "/array/getParamArray.do";
    var params = {};    
    params["names"] = ["张三", "李四", "王武"];
    params["ages"] = [20, 26, 48];
    
    $.ajax({
        url: url,
        type: 'post',
        traditional: true, // 和表单传数组参数同样。
        data:params, 
        success:function(data){
            alert(data);
        }
    });
}

这时controller层的参数名字没有后面的[]括号了。app

@RequestMapping(value="/getParamArray2")
public String getParamArray2(@RequestParam("names") String[] names, 
        @RequestParam("ages") int[] ages){
    
    LOG.info("getParamArray names={}, ages={}", Arrays.toString(names), Arrays.toString(ages));
    
    return "viewName";
}

三、表单传数组参数,参数名字能够很灵活,后面可加[],可不加,controller层的参数名字要对应起来post

<form action="<%=contextPath %>/array/getParamArray2.do" method="post">
    <table>
        <tr>
            <td>名字1</td><td><input name="names[]" value="张三" /></td>
        </tr>
        <tr>
            <td>名字2</td><td><input name="names[]" value="李四" /></td>
        </tr>
        <tr>
            <td>年龄1</td><td><input name="ages" value="30" /></td>
        </tr>
        <tr>
            <td>年龄2</td><td><input name="ages" value="25" /></td>
        </tr>
        <tr>
            <td><input type="reset" value="重置" /></td>
            <td><input type="submit" value="提交" /></td>
        </tr>
    </table>
</form>

controller层的参数名字和form表单中的名字一致url

@RequestMapping(value="/getParamArray3")
public String getParamArray3(@RequestParam("names[]") String[] names, 
        @RequestParam("ages") int[] ages){
    
    LOG.info("getParamArray names={}, ages={}", Arrays.toString(names), Arrays.toString(ages));
    
    return "viewName";
}
相关文章
相关标签/搜索