2016-10-25 2 views
0

Ich habe ein Modell als List<Collaborateur> von meinem Controller Action zu meinem JSP. Und ich habe die folgende Funktion in JQuery/Javascript:Zugriff auf Java-Modell Liste von Javascript/JQuery dynamisch

function showCollaborateurEmail(index) { 
 
    alert("${collaborateurs[1].email}"); // Works 
 
    alert("${collaborateurs[2].email}"); // Works 
 
    //.... 
 
    alert("${collaborateurs[index].email}"); // Not working 
 
}

Deshalb möchte ich dynamisch die E-Mail von meinem Collaborateur Modell zeigen, indem sie die Funktion showCollaborateurEmail(index) aufrufen.

Vielen Dank für Ihre Hilfe!

+0

was isindex Wert ?? – Mahi

+1

nicht möglich: index ist eine JavaScript-Variable, die auf der Serverseite nicht verfügbar ist. –

+0

Indexwert ist ein numerischer Wert (möglicherweise 1,2, ...) – marherbi

Antwort

-2

Bitte überprüfen die index korrekt an die Funktion ist vorbei und versuchen, mit Hilfe dieser

alert("${collaborateurs[" + index + "].email}"); 
+0

Nein ich habe diese Lösung schon ausprobiert aber es hat nicht funktioniert:/ – marherbi

+0

Man muss unterscheiden, was auf der Serverseite passiert und was auf der Clientseite passiert. Die Serverseite generiert die Seite mit dem JavaScript-Code und sendet sie an den Client. index ist eine JavaScript-Variable. Es ist nur eine Zeichenfolge aus der Sicht des Servers und ein unbekanntes Token, wenn Sie versuchen, es als serverseitige Variable zu verwenden. Es gibt nichts, das serverseitige Ausdrücke automatisch nach dem Laden der Seite neu bewertet. – mm759

0

Zwei Ansätze erforschen: die 1) mit allen Elementen der Liste einen Javascript-Array erzeugen, und Zugang nach Belieben auf der Client-Seite (Javascript) 2) Zugriff auf die "Collaborateurs" über eine Ajax-Anfrage

1

Das Problem, das Sie gegenüberstellen, ist der Austausch von Daten zwischen Code auf der Serverseite und Code auf der Clientseite. Es gibt mehrere Möglichkeiten, um Ihr Ziel zu erreichen. Sie können ...

  1. speichern die Listenelemente in einer versteckten Form-Feld (von Trennzeichen zu entkommen könnte eine Herausforderung sein) oder
  2. erzeugen Javascript - Code auf Serverseite in JSP, die eine Javascript-Array erstellt mit Die Listenelemente oder
  3. verwenden Ajax.

1 und 2 sind eher ad hoc - Lösungen für ein kleines Problem. 3 ist eher eine größere Lösung (abhängig von Ihrer technischen Umgebung), die zusätzlich die Möglichkeit bietet, Seitenladevorgänge zu vermeiden.

+0

2 und 3 ergeben die gleiche Logik, die Notwendigkeit, die Werte in eine gemeinsame Sprache zu analysieren, JSON (nicht nativ), XML (schwer), ... aber das ist immer die beste Lösung. – AxelH

0

Ich würde nicht empfehlen, Server- und Client-Code wie folgt durch jsp zu mischen. Stattdessen sollten Sie ein Servlet erstellen und nennen, was Sie mit Ajax brauchen.

Wenn Sie einen schmutzigen/quick Trick verwenden Ich denke, können Sie das Array von der Serverseite auf die Client-Seite in einem <script> Tag

Zum Beispiel bauen zurück:

<script> 
var emailArray = [ 
    <%for (int i = 0; i > collaborateurs.length; i++){ %> 
    "<%=collaborateurs[i].email %>" 
    <% 
     if(i < collaborateurs.length - 1){ 
      %>, <% 
     } 
    }%> 
]; 
</script> 

(I schrieb dies von Hand, ich bin mir nicht sicher, ob die Syntax korrekt ist, aber ich hoffe, Sie haben die Idee)

+1

Das ist schmutzig! Du könntest wenigstens eine JSTL-foreach-Schleife benutzen;) EDIT: Du musst wahrscheinlich Zitate haben – AxelH

+0

Du hast absolut recht, aber Jahre sind vergangen, seit ich jsp benutzt habe, tatsächlich habe ich gesagt, es war eine schmutzige Lösung, ahah. Für alle, die diese Antwort sehen: Der Code soll nur die Mittel erklären, nicht optimal. – Pievis

0

Eine weitere Option, die Sie haben werden, konvertiert Ihr List-Objekt in JSON und dann auf eine Variable in JSP während Compiling-Phase und die auf der Client-Seite parsen json und mak e ein Objekt und iteriere darüber. Auf diese Weise können Sie auch nach dem Laden Ihrer Seite auf Ihre Liste zugreifen.

Sie können API wie Gson, Jackson usw. verwenden

Beispiel: -

List<Object> list1=new ArrayList<>(); 
// Add values to list here 
JSONArray obj=new JSONArray(list1); 

In JSP:

var collaborateursList=${collaborateurs}; 

function showCollaborateurEmail(index) { 
    alert(collaborateursList[1].email); 
    alert(collaborateursList[2].email); 
    alert("collaborateursList[index].email); 
} 
Verwandte Themen