• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Struts iterator index JS-Funktion übergeben??

7bkahnt

Neues Mitglied
Hallo,
es wär ideal, wenn mir jemand helfen könnte.
Ich habe folgendes Problem:
Ich lasse mittels Struts einen Iterator über eine Liste laufen.
HTML:
<s:iterator value="ansprList" status="postbuchStatus">
....
<input type="image" src="../bilder/okaybutton.jpg" ..onclick="return Auswahlanlage(%{postbuchStatus.index});" ....>
....
</s:iterator>
Mittels
HTML:
<s:property value="%{postbuchStatus.index}"/>
bekomme ich den jeweiligen index vom Iterator angezeigt, nur brauche ich genau diesen in einer JS-Funktion.
Hat jemand eine Idee, wie ich den darein bekomme? Denn mittels des oben gezeigten Beispiels funktioniert es leider nicht.
Wär genial, wenn mir jemand helfen könnte.
Grüsse
 
Hallo,
es wär ideal, wenn mir jemand helfen könnte.
Ich habe folgendes Problem:
Ich lasse mittels Struts einen Iterator über eine Liste laufen.
...
nur brauche ich genau diesen in einer JS-Funktion.

Dir ist bewusst, dass JSP serverseitig läuft und JS im Browser?

JS kann erst auf dem Ergebnis (also dem HTML im Browser) angewandt werden, auf Variablen und Funktionen vom serverseitigen Code kannst du da nicht zugreifen.

Falls du Daten vom Serverskripting im JS brauchst, hilft evtl. was ala <input type="hidden" name="varname" value="<%jsp-wasauchimmer%>">.

Die JSP-Funktionen können erst wieder was bearbeiten, wenn du was zurückPOSTest.
 
Dir ist bewusst, dass JSP serverseitig läuft und JS im Browser?
JS kann erst auf dem Ergebnis (also dem HTML im Browser) angewandt werden

Das ist mir klar. Das ist ja auch nicht das Problem. Die Seite wird geladen, sprich der jeweilige index des Iterators in der Zeile ist schon vorhanden. Und erst dann klickt der Anwender den Button, der dann per onclick eben genau diesen index übergeben soll. Das muss ohne weiteres möglich sein, denn wenn ich irgendeinen Wert in ein Textfeld schreibe und per onclick einer JS-Funktion diesen Wert übergeben will, geht das ohne weiteres. Die Frage ist eben nur wie ich an den index rankomme.
 
Das ist mir klar. Das ist ja auch nicht das Problem. Die Seite wird geladen, sprich der jeweilige index des Iterators in der Zeile ist schon vorhanden.

Hast du mal den Abschnitt im HTML, wie der Client es kriegt?
Evtl. hast du nur irgendwo ein paar Klammern vergessen und schickst die Abfrage als Text zum Client rüber anstatt ihn auf dem Server auswerten zu lassen.
 
Ja klar. Der Abschnitt ist im Prinzip wie oben gezeigt. Hier nochmal der komplette:
HTML:
<table class="userTable" cellpadding="5px"> 
<s:iterator id="it" value="ansprList" status="postbuchStatus">
<tr onclick="doIt(event)" class="<s:if test="#postbuchStatus.odd == true ">odd</s:if><s:else>even</s:else>" style="height:5px;">
<td width="155px">
<s:property value="ansprechpartner"/>
</td>
<td width="155px">
<s:property value="text_email" />
</td>
<td width="155px">
<s:property value="telefon" />
</td>
<td width="155px">
<s:property value="telefax" />
</td>
<td>
<input type="image" src="../bilder/okaybutton.jpg" title="Ansprechpartner übernehmen" onclick="return Auswahlanlage(%{postbuchStatus.index});" style="height:25px; width:25px;" class="buttons"/>
</td>
<td>
<s:property value="#postbuchStatus.index"/>
</td>
</tr>
</s:iterator>
</table>

Wie gesagt, in der letzten Spalte, in der das property-tag ist, wird der index ja angezeigt. Nur wenn ich es genau in der Syntax der JS-Funktion übergeben will funktioniert es nicht und er meckert "Syntaxfehler"
Hier mal noch die JS-Funktion

HTML:
function Auswahlanlage(id){
alert(id);
document.getElementById("idauswahl").value=id;
if(confirm("Ansprechpartner übernehmen?")){
document.suchfeldform.action="Ansprechpartneranlage";
}
else{
return false;
}
}
 
Was soll denn der Browser an dem Button noch anders interpretieren? Das ist doch ein ganz normales html-Element.
Aber wenn es dir hilft mit weiter zu helfen^^. Das ist eine Zeile, die mittels des Iterators in der html-Datei steht.
Vom Iterator selbst steht nix in der html-Datei.
HTML:
<tr onclick="doIt(event)" class="even" style="height:5px;">
    <td width="155px">
     tester2
    </td>
    <td width="155px">
 
    </td>
    <td width="155px">
 
    </td>
    <td width="155px">
 
    </td>
    <td>
 
    <input type="image" src="../bilder/okaybutton.jpg" title="Ansprechpartner übernehmen" onclick="return Auswahlanlage(%{postbuchStatus.index});" style="height:25px; width:25px;" class="buttons"/>
    </td>
    <td>
     1
    </td>
   </tr>
Nein <%=...%> ist doch für serverseitige Sachen, die beispielsweise mittels Java initialisiert werden.
postbuchStatus wurde doch aber in keiner Java-Datei initialisiert, sondern im iterator-tag.
Bekomme dementsprechend natürlich auch einen Fehler, wenn ich <%=..%> verwende.
 
Nein <%=...%> ist doch für serverseitige Sachen, die beispielsweise mittels Java initialisiert werden.
postbuchStatus wurde doch aber in keiner Java-Datei initialisiert, sondern im iterator-tag.
Bekomme dementsprechend natürlich auch einen Fehler, wenn ich <%=..%> verwende.

%{ } ist AUCH für serverseitige Sachen (ab JSP 2.0).
Offenbar versteht dein Container %{ } nicht (das ganze wird im Gegensatz zu dem <s:iterator...> Zeug da 1:1 übermittelt).
Und der Iterator Tag ist SERVERSEITE (wie du in deiner HTML-Ausgabe ja eben gesehen hast).

JSP wird vom J2EE Container in ganz normale Servlets übersetzt. Also, was steht den hinter dem onclick, wenn du die <%= %> Tags verwendest?
 
Zurück
Oben