[英]Passing value from JSP scriptlet to servlet
我想顯示表內容並編輯基於相應ID的特定行,該唯一ID是通過單擊相應行的提交按鈕獲取的唯一ID。
下面的代碼用於列出表中所有記錄,並在每行上帶有“編輯”按鈕:
<TABLE align="Center" border="1px" width="80%">
<%Iterator itr;%>
<%List data=(List) request.getAttribute("UserData");
for(itr=data.iterator();itr.hasNext();)
{%>
<tr>
<% String s= (String) itr.next(); %> <!-- Stores the value (uniquie id) in the String s -->
<td><%=s %></td>
<td><%=itr.next() %></td>
<td><%=itr.next() %></td>
<td><%=itr.next() %></td>
當我單擊編輯按鈕時,我想從第一列和第一行獲取包含唯一ID的值。 下面給出了從字符串“ s”中獲取值的代碼:
<form id="edit" action="EditRecord" method="post" onsubmit=<%=s %>>
<td><input type="submit" value="Edit" name="edit"> </td>
</form>
現在,我想將存儲在String中的該值傳遞給我的servlet“ EditRecord”,但是不知何故該值沒有傳遞。
servlet的代碼如下:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Connection conn;
Statement stmt;
ResultSet res = null;
String id ;
String query;
DatabaseConnection dbconn;
// protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try{
id=request.getParameter("id");
System.out.println(id);
dbconn=new DatabaseConnection();
conn=dbconn.setConnection();
System.out.println(conn);
stmt=conn.createStatement();
System.out.println(stmt);
query="select * from user_details where User_id="+id;
res=dbconn.getResultSet(query, conn);
System.out.println(res);
}catch (Exception e)
{
}finally{
request.setAttribute("EditData",res );
RequestDispatcher rd=request.getRequestDispatcher("/editdata.jsp");
rd.forward(request, response);
out.close();
}
}
}
誰能告訴我我在哪里犯錯..請指導我
提前致謝
單擊提交按鈕時,將調用onSubmit
事件,但不會將任何數據發送到服務器。
對於您的情況,我建議您向表單添加隱藏的輸入 ,因此單擊“提交”按鈕后,它將被發送到服務器。 檢查以下代碼:
<form id="edit" action="EditRecord" method="post" >
<td><input type="hidden" id="id" value="<%=s %>"/>
<input type="submit" value="Edit" name="edit"> </td>
</form>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.