如何将此值转换为servlet中的自定义arraylist?

时间:2015-11-03 07:11:47

标签: java ajax jsp servlets

我已经完成了这个ajax代码,可以将数据从jsp发送到servlet。

我在jsp中的ajax代码如下:

$(document).ready(function(){

$("#process").click(function(){

    console.log($("#processlist").val());

        $.ajax({

            url: "processtimesheet.do",
            type : 'POST',
            data : {processlist : $("#processlist").val()},
            success : function(response){
                alert(response);
                window.location.reload(true);
            }
        })
    });
});

JSP中的值是从下面的EL中选取的。

    <input type="hidden" name="processlist" id="processlist" value="${timesheetList}">

我在servlet中获取值..

[com.manager.model.Timesheet@a2a87e,com.manager.model.Timesheet @ e3eda6,com.manager.model.Timesheet @ 74c85,com.manager.model.Timesheet @ 130bc16]

如何将这些值转换回List?

1 个答案:

答案 0 :(得分:0)

如果右键单击并检查隐藏的输入元素附近,您可以看到输入实际上具有com.manager.model.Timesheet@a2a87e,com.manager.model.Timesheet @ e3eda6,com等值。 manager.model.Timesheet@74c85,com.manager.model.Timesheet @ 130bc16。数据无法使用。

这意味着您将完整对象嵌入到输入字段中。您可以使用/嵌入Timesheet类型的任何唯一字段,并将该列表返回给servlet。然后,您可以确定在服务器端选择了哪个列表。

假设id类中有Timesheet个字段,请构建一个id列表:

<input type="hidden" name="processlist" id="processlist" value="${timesheetIdList}">

和servlet:

Map<Integer, Timesheet> index = ...;// map (unique index) construction
List<Timesheet> listSelected = new ArrayList<>;
for(int i = 0; i<idarray.length; i++) {
  if(index.containsKey(idarray[i])) {
    listSelected.add(index.get(idarray[i]))
  }
}