Javascript-Funktionsaufruf mit Thymeleaf

Lesezeit: 2 Minuten

Ich muss eine Javascript-Funktion für die Thymeleaf-Vorlage aufrufen, etwa so:

Fall 1:

<select th:onclick="${'function1('a')'}">

Aber in diesem Fall funktioniert das Thymeleaf nicht. Vor einigen Recherchen (einschließlich Stackoverflow) bekomme ich die folgenden “Lösungen”:

Fall 2:

<select th:onclick="${'function1(''a'')'}">

Fall 3:

<select th:onclick="${'function1(\'a\')'}">

Fall 4:

<select th:onclick="${'function1(\''+'a'+'\')'}">

Aber in allen Fällen erhalte ich den gleichen Fehler: “…Ausnahme beim Auswerten des SpringEL-Ausdrucks…”

Mein Problem betrifft Javascript-Aufrufe. Ich muss einige Parameter $ {var} für den Aufruf in die js-Funktion einfügen. Wie kann ich das beheben?

Vielen Dank

Wenn Sie keine dynamischen Variablen im JS-Funktionsaufruf benötigen, gehen Sie wie folgt vor:

th:onclick="'alert(\'a\');'"

Dadurch werden die einfachen Anführungszeichen einfach umgangen und es wird kein SpringEL benötigt (natürlich könnten Sie in diesem Fall auf das Thymeleaf-Attribut verzichten und einfach onclick verwenden).

Um vars darin einzufügen:

th:onclick="'alert(\'' + ${myVar} + '\');'"

Ich habe die Alarmfunktion verwendet, damit ich es ausprobieren und beweisen kann, dass es funktioniert. Ich hoffe, das hilft.

  • Danke, dieses Konzept funktioniert für mich, ich habe verwendet: th:attr=”onchange=’javascript:addAttr(\”+${poi.id}+’\’, this.value)'”

    – f4root

    24. Oktober 2014 um 8:55 Uhr


Sie müssen die Javascript-Funktion wie unten erwähnt aufrufen.

th:onclick="'javascript:function1(\''+ ${a} +'\');'"

Ich denke, das könnte dir helfen.

  • wie zu senden, wenn es zwei Werte innerhalb der Funktion hat?

    – rajadilipkolli

    7. Juli 2016 um 9:43 Uhr

Soweit ich weiß, haben Sie zwei Möglichkeiten, wie Sie es tun können:

  1. Verwendung von doppelten Klammern

    <body th:onload="showToast([[${toast}]])">
    ...
    </body>
    

Und dann funktioniert JS so

function showToast(toast) {
    M.toast({html: toast});
}
  1. Verwendung von data-attribut

    <body th:data-toast="${toast}" th:onload="showToast()">
    ...
    </body>
    

Und entsprechende JS-Funktion

function showToast() {
    var toast = document.querySelectorAll('body')[0].getAttribute('data-toast');
    M.toast({html: toast});
}

Versuche dies.

th:onclick="${'javascript:functionXXX(' + obj.id + ')'}"

Ein weiterer “neuer” Weg mit HTML5, der Datenattribute verwendet:

th:data-url="@{/yourUrl}" th:onclick="window.location.href=this.getAttribute('data-url')"

Eine Möglichkeit besteht darin, die Zeichen zu verwenden [[' y ']].

Zum Beispiel werde ich den Inhalt der Variable „startDate“ zeigen, die ein Datumstyp und die Formatierung im Format ist dd/MM/yyyy HH:mm:ss' mit der ‘Alarm’-Funktion anzuzeigen.

<input type="button" th:onclick="alert([[${#dates.format(processInstance.startDate, 'dd/MM/yyyy HH:mm:ss')}]]);" />

Die Ausgabe ist wie folgt:

22/02/2019 15:43:02

Benutzer-Avatar
Hinotori

ich habe es so gemacht:

<td><a href="#" th:onclick="@{'deletetag(' + ${tag.id} + ');'}"><i class="nav-icon fas fa-trash"></i></a></td>

Und die deletetag-Funktion innerhalb einer einfachen <script></script>

  • Verdienen Sie eine positive Bewertung

    – Debasish Ghosh

    24. Dezember 2021 um 13:36 Uhr

1011530cookie-checkJavascript-Funktionsaufruf mit Thymeleaf

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy