2016-05-24 7 views
0

Ich habe JSP-Datei, in der ich Instanz der Java-Klasse SeznamPolozek erstellt habe. SeznamPolozek ist ein verkapseltes HashSet. Danach drucke ich jeden Eintrag von SeznamPolozek. Das läuft OK. Aber: Ich möchte auf jeder Linie Schaltfläche Entfernen, die Methode von SeznamPolozek aufruft und Element in der Zeile entfernt. Aber ich kann es nicht funktionieren. Bitte helfen Sie.Java-Methode von JSP-Datei direkt aufrufen

<%@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

'Ich möchte auf jeder Linie Schaltfläche Entfernen, welche Aufrufe Methode von SeznamPolozek und entfernt Element auf der Linie '? verwirrend. –

+0

Ich bezweifle, dass dies der kürzeste mögliche Code ist. Zeigen Sie nicht Tonnen von Feldern, wenn man es tut. – Eiko

Antwort

1

Sie können stattdessen versuchen, JavaScript zu verwenden und AJAX-Aufrufe zu verwandten Methoden zu implementieren, um das Element zu entfernen. Eine Bibliothek wie JQuery wird Ihnen auch helfen, das Dom zu modifizieren und den gewünschten Effekt zu zeigen.

1

Dies ist ein grundlegendes Missverständnis dessen, was in einer JSP geht weiter.

Sie rufen keine Methoden für Objekte auf. Ereignisse werden in HTTP-Anforderungen umgewandelt, die auf dem Server ausgeführt werden und eine HTTP-Antwort an Ihren Browser zurückgeben.

Ein Tipp: Dies ist nicht die Art, JSPs zu schreiben. Wenn Sie es tun müssen, lernen Sie JSTL. Scriptlets gingen in den späten 90ern aus, kurz nachdem Scriptlets eingeführt worden waren. Niemand sollte heute noch Scriptlets in eine Seite einbetten.

Verwandte Themen