我有JSP文件,其中我创建了java类SeznamPolozek的实例。 SeznamPolozek是封装的HashSet。之后我将从SeznamPolozek打印每个条目。这运行正常。但是:我想在每一行按钮删除哪个调用SeznamPolozek的方法并删除该行上的元素。但是我无法让它发挥作用。请帮忙。
<%@page import="java.util.Iterator"%>
<%@page import="model.Polozka"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import ="model.SeznamPolozek" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>Cena</th>
<th>Rozměr x</th>
<th>Rozměr y</th>
<th>Rozměr z</th>
<th>Název</th>
<th>Popis</th>
<th>Adresát</th>
<th>Stav objednávky</th>
<th>Vymazat</th>
</tr>
</thead>
<tbody>
<tr>
<%
SeznamPolozek seznam = new SeznamPolozek();
Iterator<Polozka> it = seznam.iterator();
session.setAttribute("it", it);
for(Polozka polozka:seznam){
out.print("<td>"+polozka.getId()+"</td>");
out.print("<td>"+polozka.getCena()+"</td>");
out.print("<td>"+polozka.getX()+"</td>");
out.print("<td>"+polozka.getY()+"</td>");
out.print("<td>"+polozka.getZ()+"</td>");
out.print("<td>"+polozka.getNazev()+"</td>");
out.print("<td>"+polozka.getPopis()+"</td>");
out.print("<td>"+polozka.getAdresat()+"</td>");
out.print("<td>"+polozka.getStavObjednavky()+"</td>");
out.print("<td><input type = \"submit\" value = \"a\" name = \"b\" onclick=\""+seznam.odeberPolozku(polozka.getId())+"\" /></td>");
}
%>
</tr>
<c:forEach items="${it}" var="item">
<tr>
<td>${item.id}</td>
<td>${item.cena}</td>
<td>${item.x}</td>
<td>${item.y}</td>
<td>${item.z}</td>
<td>${item.nazev}</td>
<td>${item.popis}</td>
<td>${item.adresat}</td>
<td>${item.stavObjednavky}</td>
<td><input type="submit" value="a" name="b" onclick="<%=seznam.odeberPolozku(4)%>"/></td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
答案 0 :(得分:1)
这是对JSP中发生的事情的基本误解。
您不会在对象上调用方法。事件将转换为在服务器上执行的HTTP请求,从而向您的浏览器返回HTTP响应。
一条忠告:这不是编写JSP的方法。如果必须这样做,请学习JSTL。 Scriptlets推出后不久,Scriptlets就在90年代后期熄灭了。在这个时代,没有人应该在页面中嵌入scriptlet代码。
答案 1 :(得分:1)
您可以尝试使用javascript代替并对相关方法实施ajax调用以删除&#39;元素&#39;。像jquery这样的库也可以帮助你修改dom并显示所需的效果。