我已经构建了一个动态表,它有一个添加按钮(添加一个新行),删除按钮(删除行)并提交。
我想获取表中的所有信息(我不知道用户将添加多少行)并在其他jsp页面处理它。
这是我到目前为止所做的:
<script type="text/javascript">
var cb=new Array();
var fn=new Array();
var ln=new Array();
var email=new Array();
var i=1;
function addRow(tableId){
var table=document.getElementById(tableId);
var rowCount=table.rows.length;
var row=table.insertRow(rowCount);
var cell= row.insertCell(0);
var element=document.createElement("input");
element.type="checkBox";
element.name="cb"+i+"";
cell.appendChild(element);
var cell1=row.insertCell(1);
cell1.innerHTML=rowCount;
var cell2=row.insertCell(2);
var element2=document.createElement("input");
element2.type="text";
element2.name="fn"+i+"";
cell2.appendChild(element2);
var cell3=row.insertCell(3);
var element3=document.createElement("input");
element3.type="text";
element3.name="ln"+i+"";
cell3.appendChild(element3);
var cell4=row.insertCell(4);
var element4=document.createElement("input");
element4.type="email";
element4.name="email"+i+"";
cell4.appendChild(element4);
i++;
}
function delRow(tableId){
var table=document.getElementById(tableId);
var rowCount=table.rows.length;
for(i=0;i<rowCount;i++){
var row=table.rows[i];
var chkbox=row.cells[0].childNodes[0];
if(chkbox!==null && chkbox.checked===true)
{
table.deleteRow(i);
rowCount--;
i--;
for(var k=1;k<rowCount;k++){
var row=table.rows[k];
var cell=row.cells[1];
cell.innerHTML=k;
}
}
}
}
function valCk(){
}
</script>
</head>
<body>
<form name="form1" action="dataShow.jsp" method="get">
<input type='button' value="Add" onclick="addRow('tableData');">
<input type='button' value="delete" onclick="delRow('tableData');">
<input type='submit' value="submit" onclick="valCk()">
<table id="tableData" border="3">
<tr><td>chack</td><td>#</td><td>First name</td><td>Last name</td><td>Email</td></tr>
<tr><td><input type='checkbox' name='cb0'></td><td>1</td><td><input type='text' name="fn0"><td><input type="text" name="ln0"></td><td><input type="email" name="email0"></td></tr>
</table>
</form>
</body>
</html>
你可以看到我为每个领域都有一个数组。我想如果我将所有数据放在数组中并使用查询字符串发送它会很好但不是:/ 例如,这是3行表
的查询jsp代码是:
<%
String rows=request.getParameter("row");
int foo = Integer.parseInt("rows");
for(int i=0;i<=foo;i++){
user u =new user();
u.fn=request.getParameter("fn[i]");
u.ln=request.getParameter("ln0[i]");
u.email=request.getParameter("email[i]");
}
%>
我收到500错误。
HTTP状态500 - 内部服务器错误
输入例外报告
messageInternal Server Error
description服务器遇到内部错误,导致无法完成此请求。
例外
org.apache.jasper.JasperException:PWC6033:JSP的Javac编译出错
PWC6197:jsp文件中的行:10发生错误:/dataShow.jsp PWC6199:生成的servlet错误: 找不到标志 符号:变量fn location:class org.apache.jsp.dataShow_jsp
PWC6197:jsp文件中的第29行:/dataShow.jsp发生错误 PWC6199:生成的servlet错误: 找不到合适的打印方法() 方法javax.servlet.jsp.JspWriter.print(java.lang.Object)不适用 (实际和正式的参数列表长度不同) 方法javax.servlet.jsp.JspWriter.print(java.lang.String)不适用 (实际和正式的参数列表长度不同) 方法javax.servlet.jsp.JspWriter.print(char [])不适用 (实际和正式的参数列表长度不同) 方法javax.servlet.jsp.JspWriter.print(double)不适用 (实际和正式的参数列表长度不同) 方法javax.servlet.jsp.JspWriter.print(float)不适用 (实际和正式的参数列表长度不同) 方法javax.servlet.jsp.JspWriter.print(long)不适用 (实际和正式的参数列表长度不同) 方法javax.servlet.jsp.JspWriter.print(int)不适用 (实际和正式的参数列表长度不同) 方法javax.servlet.jsp.JspWriter.print(char)不适用 (实际和正式的参数列表长度不同) 方法javax.servlet.jsp.JspWriter.print(boolean)不适用 (实际和正式的参数列表长度不同)
注意GlassFish Server Open Source Edition 4。0日志中提供了异常的完整堆栈跟踪及其根本原因。