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";
}
相關文章
相關標籤/搜索