0

我打算将 javascript 数组传递给服务器。该数组将基本上包含具有多个选项的选择标记的所有选项值。

客户端

<input type="hidden" id="selectedGroupIds" name="selectedGroupIds">
<input type="submit" name="mapSubmit" value="Map Now" onclick="setGroupIds()">

function setGroupIds() {
    var selectedGroupIds = [];
    $('#selectedGroups option').each (function() {
        selectedGroupIds.push($(this).val());
    });
    $('#selectedGroupIds').val(selectedGroupIds);
}

服务器端

String[] groupArr = request.getParameterValues("selectedGroupIds");
System.out.println("Length = " + groupArr.length); // Prints 1 even if 2 elements in the array like [1,2]

更新 我知道它可以通过 getParameter() 和拆分来完成。只是想知道是否可以通过使用 getParameterValues() 不拆分来完成

4

2 回答 2

1
String selectedGroups = request.getParameter("selectedGroupIds");
String[] arr = (selectedGroups!=null)?selectedGroups.split(","):null;
于 2013-08-06T04:33:06.810 回答
0

当您有一个具有多个值的参数时,将使用获取参数值。您认为您已经通过将数组设置为输入字段的 val() 来完成此操作,但是您实际上已经在数组上执行了一个隐式连接(或内爆)类型命令到一个字符串中,一个逗号分隔列表,所以 getparametervalues 将总是只得到一个值。

使用它来获取多个值的情况,就像

<input type=checkbox name=check1 value='1'>
<input type=checkbox name=check1 value='2'>
<input type=checkbox name=check1 value='3'>

为名为 check1 的复选框组检查所有不同的值

于 2013-08-06T04:49:40.450 回答