使用隐藏域传递参数到servlet的有关问题
使用隐藏域传递参数到servlet的问题
我想把表中的某行参数传递到servlet中代码如下
我从数据库中获取clientId,然后传到servlet,测试的时候,用alert可以看到id会随着行号不一样而变化,但是传到servlet中事,打印出来的clientId始终为1,servlet代码如下
请问是什么问题呢?
------解决方案--------------------
这是form里有很多
<input type="hidden" name="clientId" value="<%= id %>"/>
然后后台获取clientId的值?
另外写个
<form id="testForm" name="testForm" action="" method="post"/>
修改后提交的时候
var url = "....?clientId=" + clientId;//clientId是你修改了的数据的id
testForm.action = url;
testForm.submit();
------解决方案--------------------
“测试已通过,谢谢。另外,我想问一下为什么直接传到servlet不行呢?”
原因是这样的:
因为在页面中你提交了多个clientId:(多行中都有相同name的参数)
所以传送到服务器端应该接收的是数组类型的参数,是有多个值的。
如果用request.getParameter(),始终只会获一个值,这个方法返回string。
想获得多个值时应该用request.getParameterValues(),这个方法返回String数组。
我想把表中的某行参数传递到servlet中代码如下
<%
int id = rs.getInt("clientId");
%>
<td><input type="hidden" name="clientId" value="<%= id %>"/></td>
<td height="22" colspan="4" bgcolor="#FFFFFF" class="STYLE3"><div align="center"><input type="submit" name="submit" value="修改" onclick="alert('<%=id %>')"/></div></td>
我从数据库中获取clientId,然后传到servlet,测试的时候,用alert可以看到id会随着行号不一样而变化,但是传到servlet中事,打印出来的clientId始终为1,servlet代码如下
package com.orange.khglxt;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.orange.khglxt.beans.DbDao;
public class ChangeClient extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException {
request.setCharacterEncoding("GBK");
response.setContentType("text/html");
String clientId = request.getParameter("clientId");
System.out.println(clientId);
RequestDispatcher rd;
request.setAttribute("clientId", clientId);
rd = request.getRequestDispatcher("/change.jsp");
rd.forward(request,response);
}
}
请问是什么问题呢?
------解决方案--------------------
这是form里有很多
<input type="hidden" name="clientId" value="<%= id %>"/>
然后后台获取clientId的值?
另外写个
<form id="testForm" name="testForm" action="" method="post"/>
修改后提交的时候
var url = "....?clientId=" + clientId;//clientId是你修改了的数据的id
testForm.action = url;
testForm.submit();
------解决方案--------------------
“测试已通过,谢谢。另外,我想问一下为什么直接传到servlet不行呢?”
原因是这样的:
因为在页面中你提交了多个clientId:(多行中都有相同name的参数)
<input type="hidden" name="clientId" value="<%= id %>"/>
所以传送到服务器端应该接收的是数组类型的参数,是有多个值的。
如果用request.getParameter(),始终只会获一个值,这个方法返回string。
想获得多个值时应该用request.getParameterValues(),这个方法返回String数组。