Shatterator: Tabelle an Servlet übergeben

Hi.

Ich habe eine jsp in der per javascriot eine dynamische Tabelle erzeugt wird. Per klick auf einen Button soll diese Tabelle an ein servlet übergeben werden welches dann die Informationen aus der Tabelle holen soll und anhand dieser dann eine neue JSP erzeugt. Das dynamische Erzeugen der Tabelle... funktionier einwandfrei.

Hier der code:

  
<form action="./playlist.html" method="get">  
<input type="button" id="MarkerButton" value="inMarker" onclick="setMarker()">  
<table id="MarkerList" border="2" cellspacing="2" cellpadding="4">  
	<tr>  
		<td>In-Marker</td>  
		<td>Out-Marker</td>  
	</tr>  
</table>  
<INPUT TYPE="submit" VALUE="Sequenzen abspielen">  
</form>  

Im Servlet habe ich nun die doGet-Methode wie folgt implementiert.

  
    protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException  
    {  
  
        PlaylistBean playlistBean = new PlaylistBean();  
        String test = req.getParameter( "MarkerList" );  
        System.out.println(test);  
        req.setAttribute( "playlist", playlistBean );  
        RequestDispatcher dispatcher = req.getRequestDispatcher( "/playlistPage.jsp" );  
        dispatcher.forward( req, resp );  
    }  

wenn ich dies nun ausführe bekomm ich nur NULL ausgegeben. Ist es überhaupt möglich eine Tabelle zu versenden oder mach ich was falsch?
Danke im Voraus

  1. Servus,

    Servus!

    [...]

    <form action="./playlist.html" method="get">
    <input type="button" id="MarkerButton" value="inMarker" onclick="setMarker()">
    <table id="MarkerList" border="2" cellspacing="2" cellpadding="4">
    <tr>
    <td>In-Marker</td>
    <td>Out-Marker</td>
    </tr>
    </table>
    <INPUT TYPE="submit" VALUE="Sequenzen abspielen">
    </form>

    
    > [...]  
      
    So, wie das da steht, ist das Markup nicht valide. In einem <form>-Element werden die <input>-Elemente beim absenden des Formulars verschickt. Deine Tabelle ist aber in keinem <input>-Element. Du könntest den Inhalt der Tabelle (die Du vermutlich auch anzeigen willst) in ein hidden-Field schreiben, dann würde das beim submit auch verschickt werden. Dann musst Du aber auch per Javascript nicht nur die sichtbare, sondern auch die zu verschickende Tabelle erweitern.  
    Bist Du Dir sicher, dass Du wirklich die Tabelle verschicken willst? Du musst ja im Servlet dann das Markup parsen und verarbeiten. Erzeuge Dir besser in einem entsprechenden <input>-Element die Daten in einer Struktur, die für das serverseitige Verarbeiten besser geeignet ist (z.B. CSV, XML, ...).  
      
    Peter
    
    1. " Erzeuge Dir besser in einem entsprechenden <input>-Element die Daten in einer Struktur, die für das serverseitige Verarbeiten besser geeignet ist (z.B. CSV, XML, ...).

      Peter "

      Vielen dank erst mal. Ich würde deinen Vorschlag gerne umsetzen. Allerdings bin ich mir nicht ganz im klaren darüber, wie das gemeint ist. Ich soll also anstelle einer Tabelle beispielsweise eine XML Struktur aufbauen. Diese muss ich serverseitig aber dann doch auch parsen oder nicht? Und für die Anzeige auf Clientseite müsste ich trotz allem zweigleisig, also Tabelle für die Anzeige und ein hidden <input> für die XML struktur oder?

      LG

      1. [...]
        Vielen dank erst mal. Ich würde deinen Vorschlag gerne umsetzen. Allerdings bin ich mir nicht ganz im klaren darüber, wie das gemeint ist. Ich soll also anstelle einer Tabelle beispielsweise eine XML Struktur aufbauen. Diese muss ich serverseitig aber dann doch auch parsen oder nicht? Und für die Anzeige auf Clientseite müsste ich trotz allem zweigleisig, also Tabelle für die Anzeige und ein hidden <input> für die XML struktur oder?

        Ja, XML oder CSV musst Du auch auf dem Server parsen, aber das ist dann eine technische Struktur und kein zur Anzeige verwendetes Markup. Du wirst ja viele Elemente aus der <table> nicht benötigen und in einem XML-Block nicht mitliefern. Bei CSV ist der Unterschied noch deutlicher.
        Ob aber XML oder CSV überhaupt das beste sind, kann man erst sagen, wenn man den genauen Anwendungsfall kennt (z.B. brauchst Du wirklich alle Daten der Tabelle oder reichen einzelne Spalten oder Zeilen; was willst Du mit den Informationen aus der Tabelle im Server anfangen, ...).

        Schöne Grüße,

        Peter

        1. Ok dann mal von vorne. Ich habe in einer JSP einen WindowsMediaPlayer eingebaut und einen Button. Klick ich auf den Button wird die Aktuelle Position (also die Sekunden) des Videos in die Tabelle geschrieben. Das ist dann der Inpoint. Bei erneutem klicken auf den Button setzt man dann den OutPoint. Diese Werte müssen nun zum Server damit ich mir dort dynamisch eine Playlist(ist eine JSP mit einem asc-mime-type im XML format) erstellen kann. Wenn also mehrere In-Out-Paare existieren wird eine Playlist erzeugt und diese Spielt dann nacheinander die einzelnen In-Out-Paare ab. der Einzige Schritt der mir dazu noch fehlt ist, dass die Zeitwerte zum server müssen damit ich dort dann anhand dieser die XML-Playlist erzeugen kann.

          1. Ok dann mal von vorne. Ich habe in einer JSP einen WindowsMediaPlayer eingebaut und einen Button. Klick ich auf den Button wird die Aktuelle Position (also die Sekunden) des Videos in die Tabelle geschrieben. Das ist dann der Inpoint. Bei erneutem klicken auf den Button setzt man dann den OutPoint. Diese Werte müssen nun zum Server damit ich mir dort dynamisch eine Playlist(ist eine JSP mit einem asc-mime-type im XML format) erstellen kann. Wenn also mehrere In-Out-Paare existieren wird eine Playlist erzeugt und diese Spielt dann nacheinander die einzelnen In-Out-Paare ab. der Einzige Schritt der mir dazu noch fehlt ist, dass die Zeitwerte zum server müssen damit ich dort dann anhand dieser die XML-Playlist erzeugen kann.

            Dann würde ich wirklich anders arbeiten. Ich würde die Start- und Endzeiten per Javascript je in ein hidden input field schreiben. Das würde ich entweder kommasepariert in ein Feld machen (<input type="hidden" name="start" value="3:25,2:26" /> und das passende Element für die Endzeiten) oder immer ein neues input an das Formular anhängen. Bei diesen Lösungen muss man aber die Reihenfolge beachten oder herausfinden (also welche Elemente gehören zusammen).
            Ein weiterer Weg wäre, eine geeignete und schlanke Datenstruktur zu definieren, z.B. [start1]#[ende1],[start2]#[ende2],[start3]#[ende3],[start4]#[ende4],...
            Dann hast Du gleich die richtige Reihenfolge und kannst anhand der Trenner entscheiden, was ein Wertpaar, und was die dazugehörigen Werte sind. Einfach zu parsen, wenig Daten bei der Übertragung, einfach per Javascript zusammenzubauen.

            Peter

            1. Das klingt sehr gut. Ich werde heute leider nicht mehr dazu kommen es zu testen aber mioch gleich morgen früh dran setzen.

              Vielen Dank für deine Hilfe