如何将该值获取到servlet中的自定义arraylist中



我已经完成了将数据从jsp发送到servlet的ajax代码。

我在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?

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

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

假设Timesheet类中有id字段,则构造一个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]))
  }
}

相关内容