Jsp 使用Java Servlet获取删除按钮

Jsp 使用Java Servlet获取删除按钮,jsp,servlets,Jsp,Servlets,我有一个名为LeggTilHandlekurv(shoppingCart)的servlet、一个jsp和一个Vare(Item)类。它的意思是向shoppingCart中添加项目,这很好,但问题是如何让delete功能工作?在leggtilhandlekurv.jsp中,您可以选择键入一个项目,该项目将显示一个删除按钮。我希望“删除”按钮能正常工作。到目前为止,我的尝试是从if(vare.equals(“remove”))开始标记出servlet类 手稿 Min handleliste Leg

我有一个名为LeggTilHandlekurv(shoppingCart)的servlet、一个jsp和一个Vare(Item)类。它的意思是向shoppingCart中添加项目,这很好,但问题是如何让delete功能工作?在leggtilhandlekurv.jsp中,您可以选择键入一个项目,该项目将显示一个删除按钮。我希望“删除”按钮能正常工作。到目前为止,我的尝试是从if(vare.equals(“remove”))开始标记出servlet类


手稿
Min handleliste
Legg til vare:

瓦勒
您可以使用隐藏的输入字段,该字段的值为
vareNavn
,表单标签将表单提交到servlet并获得响应。因此,您的jsp代码如下所示:

<td>
    <form action="LeggTilHandlekurv" method="post">
       <!-- hidden input-->
       <input type="text" hidden name="item" value="<%=vare.getVareNavn() %>">
       <!--added name attribute-->
       <input type="submit" name="remove" value="Remove item"> 
    </form>
  </td>
//check if request is for remove
if (request.getParameter("remove") != null) {
  //get values
  String item = request.getParameter("item");
  //get data from session
  ArrayList<Vare> varer1 = (ArrayList<Vare>) request.getServletContext().getAttribute("handlekurv");

  Iterator<Vare> it = varer1.iterator();
  //iterate through datas
  while (it.hasNext()) {
    Vare name = it.next();
    //check if values matches
    if (name.getVareNavn().equals(item)) {
      it.remove(); //remove
    }
  }
  //pass updated value to jsp page
  session.setAttribute("handlekurv", varer1);
  request.getRequestDispatcher("leggtilhandlekurv.jsp").forward(request, response); 
  }

另外,在这里指定name属性
,并将用于添加新值的所有代码放在
if(request.getParameter(“add”)!=null){//put code here}

谢谢,但这对我不起作用,我是否应该用替换您的jsp代码,以及在切换到if(request.getParameter(“add”)!=null)时替换您的jsp代码当我在if语句中添加了所有内容时,代码将不起作用。添加代码中是否有我应该删除的内容?我在td中使用了
表单
,因为当您单击提交按钮时,只有表单中的值才会被提交。此外,这些代码已经过测试。我刚刚添加了
if(request.getParameter(“add”)!=null)
关于add codes,在我这方面效果很好。好的,非常感谢。我忘记在add代码周围添加if(request.getParameter(“add”)!=null)。
<%@page import="oppgave1.Vare"%>
<%@page import="java.util.ArrayList"%>
    
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Handleliste</title>
</head>
<body>

<%
if(session.getAttribute("pass")==null){
    response.sendRedirect("login.jsp");
}
%>

<h1>Min handleliste</h1>


<form action="LeggTilHandlekurv" method="post">
        Legg til vare:  <br>
     <input type="text" name="vare"> <br>
     <input type="submit" value="Add item">
</form>
<table>
<th>Varer</th>

<%
ArrayList<Vare> varer = new ArrayList<Vare>();
if(request.getServletContext().getAttribute("handlekurv")!=null){
    varer=(ArrayList<Vare>) request.getServletContext().getAttribute("handlekurv");
if(!varer.isEmpty()){
    for(Vare vare: varer){
        
    
    %>
    <tr>
    <td> <%=vare.getVareNavn() %></td>
    <td> <input type="submit" name="remove" value="Remove item"> </td>
    </tr>
<%
    }

    }

}

%>
</table>
</body>
</html>
<td>
    <form action="LeggTilHandlekurv" method="post">
       <!-- hidden input-->
       <input type="text" hidden name="item" value="<%=vare.getVareNavn() %>">
       <!--added name attribute-->
       <input type="submit" name="remove" value="Remove item"> 
    </form>
  </td>
//check if request is for remove
if (request.getParameter("remove") != null) {
  //get values
  String item = request.getParameter("item");
  //get data from session
  ArrayList<Vare> varer1 = (ArrayList<Vare>) request.getServletContext().getAttribute("handlekurv");

  Iterator<Vare> it = varer1.iterator();
  //iterate through datas
  while (it.hasNext()) {
    Vare name = it.next();
    //check if values matches
    if (name.getVareNavn().equals(item)) {
      it.remove(); //remove
    }
  }
  //pass updated value to jsp page
  session.setAttribute("handlekurv", varer1);
  request.getRequestDispatcher("leggtilhandlekurv.jsp").forward(request, response); 
  }