我试图在我的控制器中呈现一个对象列表,这些对象作为隐藏的变体从jsp传递。
这是我的密码
in my employeeResults.jsp
<c:forEach items="${list}" var="employee" >
<tr>
<td>${employee.empId}</td>
<td>${employee.empName}</td>
<td>${employee.empEmail}</td>
</tr>
</c:forEach>
<form method="POST" action="downloadCSV.html" >
<input type="hidden" id="empList" name="empList" value="${list}"/>
<input type="submit" name="download" value="Download"/>
</form>在我的控制器中
//员工搜索方法调用
@RequestMapping(value = "/search", params = "search", method = RequestMethod.POST)
public ModelAndView lookupEmployee(@ModelAttribute("command") Employee emp) {
String lookupEmpId = null;
if(emp.getEmpId()!= null)
lookupEmpId = emp.getEmpId();
String[] line = lookupEmpId.split("\n");
List<String> eIds = new ArrayList<String>();
for(String i: line){
eIds.add(i);
}
List<Employee> listEmp = employeeDAO.searchRecords(eIds);
ModelAndView model = new ModelAndView("lookupResults");
model.addObject("list",listEmp);
return model;
}// addContact()
@RequestMapping(value = "/downloadCSV", method = RequestMethod.POST)
public void downloadCSV(HttpServletRequest request, HttpServletResponse response) throws IOException {
String empList = request.getParameter("empList");
List<String> items = Arrays.asList(empList.split("\\s*,\\s*"));
-----
}当我运行时,empList将返回数组格式的标记,但我想要做的是从jsp中获取Employee对象列表。
任何帮助都是非常感谢的。
提前谢谢!
发布于 2014-07-09 16:22:29
这不是将对象保存在隐藏字段中的正确方法。
查看浏览器中的源代码,它可能会显示类似于默认toString()表示的List<Employee>。
<input type="hidden" id="empList" name="empList" value="[pkg.Employee@7b9bd73]"/>在lookupEmployee()方法中将其设置为属性,并在downloadCSV()方法中将其返回。
样本代码:
public ModelAndView lookupEmployee(HttpServletRequest request,@ModelAttribute("command") Employee emp) {
...
List<Employee> listEmp = employeeDAO.searchRecords(eIds);
request.getSession().setAttribute("empList", listEmp);
...
}
public void downloadCSV(HttpServletRequest request, HttpServletResponse response) throws IOException {
List<Employee> empList = (List<Employee>)request.getSession().getAttribute("empList");
...
}编辑
我不想为此使用会话范围,我正在寻找任何其他选择
使用JSON字符串在服务器和客户端之间传输对象。
使用任何JSON解析库(如GSON图书馆 )来从JSON字符串和反面生成一个JAVA对象。
请看一下这个示例
https://stackoverflow.com/questions/24658195
复制相似问题