首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将列表对象作为隐藏变量从JSP传递到servlet时出错

将列表对象作为隐藏变量从JSP传递到servlet时出错
EN

Stack Overflow用户
提问于 2014-07-09 15:47:08
回答 1查看 6.5K关注 0票数 0

我试图在我的控制器中呈现一个对象列表,这些对象作为隐藏的变体从jsp传递。

这是我的密码

in my employeeResults.jsp

代码语言:javascript
复制
<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>

在我的控制器

//员工搜索方法调用

代码语言:javascript
复制
@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对象列表。

任何帮助都是非常感谢的。

提前谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-09 16:22:29

这不是将对象保存在隐藏字段中的正确方法。

查看浏览器中的源代码,它可能会显示类似于默认toString()表示的List<Employee>

代码语言:javascript
复制
<input type="hidden" id="empList" name="empList" value="[pkg.Employee@7b9bd73]"/>

lookupEmployee()方法中将其设置为属性,并在downloadCSV()方法中将其返回。

样本代码:

代码语言:javascript
复制
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对象。

请看一下这个示例

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24658195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档