7

I have an html file, thymeleaf, that has a variable passed from the controller that I need to give to a function on an external javascript file. How do I do this ?

I can get the variable like

<label th:utext="${id}" ></label>

I need to pass that id to a function that's inside

<script th:src="@{/js/myfunctions.js}" type="text/javascript"></script>

There's a function there :

function myFunction(id){

}
2

5 Answers 5

7

You can do something like this :

<input type="hidden" id="yourId" th:value="${id}"/>

Then in your js function :

function myFunction(){
 var val = $("#yourId").val();
}

Note that I use Jquery but the principe is the same.

If the JS function code is in your html page (not .js external file) you can access the model value like this :

function myFunction(){
  var val = "${id}";
}
Sign up to request clarification or add additional context in comments.

2 Comments

I cannot do like this var val = "${id}";
how can assing to an external file without assign in the html a big json?
5

Inline HTML example:

th:onclick="${'myFunction(' + id + ');'}"

2 Comments

I have an use case where id needs to be resolved like '1234' (with the single quotes) any idea how that can be done.
@p.k <span th:attr="onclick=${'doThis('+ '''' + user.getTestJquery() + '''' + ')'}">aaaa</span> should do it When I inspect element I see: <span onclick="doThis('presetValue')">aaaa</span>
4

try this: (a bit late to the party)

<script type="text/javascript" th:inline="javascript">

th:attr="onChange=|yourFunction(${id})|" </script>

Comments

3

Pass a variable like that:

<script th:inline="javascript">myFunction(/*[[${id}]]*/);</script>

Comments

0

This is an example:

//for parameter
function myfunction ([[${id}]]){
    //this is for address rout 
    window.location=[[@{/user}]]
}

use [[]] and put thymleaf expression

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.