Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 将列表对象作为隐藏变量从JSP传递到servlet时出现问题_Spring_List_Servlets_Jstl_Hidden Field - Fatal编程技术网

Spring 将列表对象作为隐藏变量从JSP传递到servlet时出现问题

Spring 将列表对象作为隐藏变量从JSP传递到servlet时出现问题,spring,list,servlets,jstl,hidden-field,Spring,List,Servlets,Jstl,Hidden Field,我试图在我的控制器中呈现一个对象列表,这些对象作为隐藏变量从jsp传递 这是我的密码 在my employeeResults.jsp中 <c:forEach items="${list}" var="employee" > <tr> <td>${employee.empId}</td> <td>${employee.empName}</td> <td>${employee.empEmail}</td>

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

这是我的密码

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

${employee.empId}
${employee.empName}
${employee.empEmail}
在我的控制器中

//用于员工搜索的方法调用

@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*"));
    -----
    }
@RequestMapping(value=“/search”,params=“search”,method=RequestMethod.POST)
公共模型和视图查找员工(@modeldattribute(“命令”)员工emp){
字符串lookupEmpId=null;
if(emp.getEmpId()!=null)
lookupEmpId=emp.getEmpId();
String[]line=lookupEmpId.split(“\n”);
List eIds=new ArrayList();
用于(字符串i:行){
添加(i);
}
List listEmp=employeeDAO.searchRecords(EID);
ModelAndView模型=新的ModelAndView(“lookupResults”);
model.addObject(“list”,listEmp);
收益模型;
}//addContact()
@RequestMapping(value=“/downloadcv”,method=RequestMethod.POST)
public void downloadCSV(HttpServletRequest请求,HttpServletResponse响应)引发IOException{
字符串empList=request.getParameter(“empList”);
列表项=数组.asList(empList.split(“\\s*,\\s*”);
-----
}
当我运行empList时,它返回一个数组格式的sting,但我想做的是从jsp获取Employee对象列表

非常感谢您的帮助


提前谢谢

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

查看浏览器中的源代码,它可能会显示类似于
列表的默认
toString()
表示形式


编辑 我不想为此使用会话范围,我正在寻找任何其他替代选项

使用字符串在服务器和客户端之间传输对象

使用任何JSON解析库,例如从JSON字符串和JSON字符串形成JAVA对象


请看一看这个

HTTP协议不知道也不关心Java。HTTP请求参数是字符串,无法使其成为Employee对象。HTTP甚至没有对象的概念。为什么要将员工从浏览器传递到服务器。员工信息应存储在数据库中。您应该只需要发送员工的ID,服务器就可以从数据库中获取他们。您可以编辑您的问题以包含额外的代码。欢迎来到SO。@JB Nizet:实际上我正在jsp中显示员工结果,我在同一个jsp中有下载CSV选项,以便将结果保存到CSV文件中。因此,我试图将列表从jsp发送到controller。因此,当用户单击下载链接时,再次从数据库中获取部署结果,与您在jsp上显示结果的方式相同,但是生成一个CSV而不是HTML页面。我刚刚尝试了这种方法,但是empList返回nullsave in session as attribute并在deonloadCSV()方法中从session获取。谢谢,它成功了!但我不想为此使用会话范围,我正在寻找任何其他替代选项。使用一些第三方缓存,如Infinispan、EHCache等。使用GSON或JSON,将解析后的JSON字符串发送到客户端并发送回服务器。
<input type="hidden" id="empList" name="empList" value="[pkg.Employee@7b9bd73]"/>
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");
     ...
}