2014-10-23 25 views
10

tôi cần phải gọi một hàm javascript trên thymeleaf mẫu, một cái gì đó như thế này:Javascript gọi hàm với Thymeleaf

Trường hợp 1:

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

Nhưng trong trường hợp này thymeleaf không hoạt động .. một số động nghiên cứu trước (bao gồm stackoverflow) tôi nhận được sau "giải pháp":

Trường hợp 2:

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

Trường hợp 3:

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

Trường hợp 4:

Nhưng trong mọi trường hợp tôi nhận được lỗi tương tự: "... Ngoại lệ đánh giá biểu hiện SpringEL ..."

Vấn đề của tôi là về các cuộc gọi javascript, tôi cần đặt một số tham số $ {var} cho hàm js trong cuộc gọi. Làm cách nào tôi có thể khắc phục điều đó?

Cảm ơn

Trả lời

30

Nếu bạn không cần bất kỳ vars động trong các cuộc gọi chức năng JS, đây là cách để làm điều đó:

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

này chỉ đơn giản là thoát khỏi các dấu nháy đơn và không yêu cầu SpringEL (của tất nhiên bạn có thể phân chia với thuộc tính thymeleaf trong trường hợp này và chỉ sử dụng onclick đơn giản).

Để chèn vars vào nó:

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

sử dụng chức năng cảnh báo để cho phép tôi thử nó ra và chứng minh nó hoạt động. Hy vọng rằng sẽ giúp.

+1

Cảm ơn, khái niệm này phù hợp với tôi, tôi đã sử dụng: th: attr = "onchange = 'javascript: addAttr (\' '+ $ {poi.id} +' \ ', this.value)' " – balancin

+0

Tuyệt vời, rất vui khi được giúp đỡ. Cảm ơn bạn đã chấp nhận câu trả lời. –

4

Bạn cần gọi hàm javascript như được đề cập bên dưới.

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

Tôi nghĩ điều này có thể giúp ích cho bạn.

+0

làm thế nào để gửi nếu nó có hai giá trị bên trong chức năng? – rajadilipkolli

3

Hãy thử điều này.

th:onclick="${'javascript:functionXXX(' + obj.id + ')'}" 
Các vấn đề liên quan