我已经完成了这个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?
答案 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]))
}
}