直接从JSP文件调用Java方法

时间:2016-05-24 16:48:34

标签: java jsp

我有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>

2 个答案:

答案 0 :(得分:1)

这是对JSP中发生的事情的基本误解。

您不会在对象上调用方法。事件将转换为在服务器上执行的HTTP请求,从而向您的浏览器返回HTTP响应。

一条忠告:这不是编写JSP的方法。如果必须这样做,请学习JSTL。 Scriptlets推出后不久,Scriptlets就在90年代后期熄灭了。在这个时代,没有人应该在页面中嵌入scriptlet代码。

答案 1 :(得分:1)

您可以尝试使用javascript代替并对相关方法实施ajax调用以删除&#39;元素&#39;。像jquery这样的库也可以帮助你修改dom并显示所需的效果。