복붙노트

[SPRING] Thymeleaf로 Javascript 함수 호출

SPRING

Thymeleaf로 Javascript 함수 호출

thymeleaf 템플릿에서 javascript 함수를 호출해야합니다. 다음과 같습니다.

사례 1 :

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

그러나이 경우에는 thymeleaf가 작동하지 않습니다. 일부 연구 (stackoverflow 포함) 전 다음과 같은 "솔루션"을 얻습니다.

사례 2 :

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

사례 3 :

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

사례 4 :

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

그러나 모든 경우에 동일한 오류가 발생합니다 : "... 예외 SpringEL 식 평가 중 ..."

내 문제는 자바 스크립트 호출에 관한, 일부 매개 변수 $ {var} js 함수 호출에 대한 필요합니다. 어떻게 해결할 수 있습니까?

감사

해결법

  1. ==============================

    1.JS 함수 호출에서 동적 변수를 필요로하지 않는다면 다음과 같이하십시오.

    JS 함수 호출에서 동적 변수를 필요로하지 않는다면 다음과 같이하십시오.

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

    이것은 단순히 작은 따옴표를 이스케이프하고 SpringEL이 필요하지 않습니다 (물론이 경우에는 thymeleaf 속성을 사용하지 않고 plain onclick 만 사용하면됩니다).

    vars를 삽입하려면 다음을 수행하십시오.

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

    내가 그것을 밖으로 시도하고 그것이 작동 증명할 수 있도록 경보 기능을 사용. 희망이 도움이됩니다.

  2. ==============================

    2.아래 언급 된대로 자바 스크립트 함수를 호출해야합니다.

    아래 언급 된대로 자바 스크립트 함수를 호출해야합니다.

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

    나는 이것이 당신을 도울 수 있다고 생각합니다.

  3. ==============================

    3.이 시도.

    이 시도.

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

    4.JS에서 두 개의 값 보내기 :

    JS에서 두 개의 값 보내기 :

    function openGate(IP,Port) {
       // Some operations with parameters IP and Port
    }
    
    
    <button id="open" type="button" th:onclick="'openGate(\'' +${gate.gateIp} +'\',\''+${gate.gatePort}+'\')'"  class="btn btn-warning">Open the gate</button>
    

    thymeleaf onclick에서는 매개 변수에 할당량을 사용하고 있습니다. 따라서 소스 페이지가 보입니다.

    <button id="open" type="button" onclick="openGate('192.168.10.10','9938')"  class="btn btn-warning">Open gate</button>
    
  5. ==============================

    5.한 가지 방법은 [[ 'y']] 문자를 사용하는 것입니다.

    한 가지 방법은 [[ 'y']] 문자를 사용하는 것입니다.

    예를 들어 Date 형식의 변수 'startDate'의 내용을 표시하고 dd / MM / yyyy HH : mm : ss '형식으로 서식을 지정하여'alert '기능을 사용하여 표시합니다.

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

    출력은 다음과 같습니다.

    22/02/2019 15:43:02
    
  6. from https://stackoverflow.com/questions/26526037/javascript-function-call-with-thymeleaf by cc-by-sa and MIT license