我正在处理当前的项目模块,即用户对Excel工作表进行修改,我仍然无法获得动态<td>
值。
我的JSP:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ page session="true"%>
<html>
<head>
<style type="text/css">
</style>
</head>
<body>
<form action="save" method="post" id="exceldata">
<table border="5" id="dataTable">
<tbody>
<c:forEach var="data" items="${Hello.userlist}" varStatus="loop">
<tr>
<c:forEach var="innerData" items="${data}">
<td id="innerData" contenteditable="true">
<c:out value="${innerData}"></c:out></td>
// ${innerData} will be updated by user
//here i need updated td ${innerData} data
//i have done all the possible R&D in 2days
// i can not use <input> under <td>
</c:forEach>
</tr>
</c:forEach>
</tbody>
</table>
<input type="hidden" value="${sizeOfData}" name="sizeOfData">
<input type="submit" value="save">
</form>
</body>
</html>
我的控制器:
这里在我的控制器类和saveExcel中我需要更新的td值td
Excel_Data ed = new Excel_Data();
@RequestMapping("/")
public ModelAndView showExcel() {
List ll = ed.readData(FILE_NAME);
lb.setUserlist(ll);
home.addObject("sizeOfData", ll.size());
home.addObject("Hello", lb);
return home;
}
@RequestMapping(value = "/save", method = RequestMethod.POST)
public ModelAndView saveExcel(@ModelAttribute("userForm") ListBean lb) throws IOException {
// what to do here?
}
}
我用过
<input type="hidden" value=${innerData} name="innerData">
但它没有发送更新的数据
答案 0 :(得分:0)
根据您的问题,您似乎正在尝试构建类似Excel的功能。可以修改多个单元格,并且需要将修改提交回服务器。
发布表单时,您可以使用javascript迭代所有单元格并构建一个json对象。例如,关注sudo代码
var cells = new Object();
for every cell
celss[cell id] = <text content of the cell>
end for
var cellText = JSON.stringify(cells)
set the value of hidden field
在服务器端,您的方法需要使用@RequestParam注释具有预期的输入字段。您可以使用gson或此类工具来解析数据。如果你遵循良好的id惯例,例如id可以是&#34; id __&#34;,你可以解析它以找出内容的去向。
答案 1 :(得分:0)
表单应该与modelAttribute一起提及,它在保存后将表单的值存储到该对象中。
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<form:form method="POST" id="form" name="form" class="form"
action="${pageContext.request.contextPath}/home/page2/submit"
modelAttribute="data">
<table border="5" id="dataTable">
<tbody>
<c:forEach var="data" items="${Hello.userlist}" varStatus="loop">
<tr>
<c:forEach var="innerData" items="${data}">
<td id="innerData" contenteditable="true" path="name">
<c:out value="${innerData}"></c:out></td>
</c:forEach>
</tr>
</c:forEach>
</tbody>
</table>
<input type="hidden" value="${sizeOfData}" name="sizeOfData" path="name">
<input type="submit" value="save">
</form:form>
应该在项目的模型包中创建一个类,如下所示
public class Data {
String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}}
Controller将具有以下方法,@ RequestMapping(value =“/ method2 / submit”,method = RequestMethod.GET) public String method3(ModelMap模型,HttpSession会话,HttpServletRequest请求){
model.addAttribute("data",new Data());
return VIEWS_LOCATION +"/secondPage";
}
@RequestMapping(value="/method2/submit",method = RequestMethod.POST)
public String method3(ModelMap model, @ModelAttribute("data") Data data) {
model.addAttribute("name",data.getName());
return VIEWS_LOCATION +"/secondPage";
}
所有以path =“name”为后缀的元素将由数据模型自动读取并存储在字符串名称中。