Настройка переменной javascript из модели Spring с помощью Thymeleaf



как я могу прочитать переменные модели Spring модель и настройка ее в Javascript?



обратите внимание, что я использую Thymeleaf как шаблонный движок.



Весна-стороны:



@RequestMapping(value = "message", method = RequestMethod.GET)
public String messages(Model model) {
model.addAttribute("message", "hello");
return "index";
}


на стороне клиента:



<script>
....
var m = ${message}; // not working
alert(m);
...
</script>
595   6  

6 ответов:

официальный документация:

<script th:inline="javascript">
/*<![CDATA[*/

    var message = /*[[${message}]]*/ 'default';
    console.log(message);

/*]]>*/
</script>
var message =/*[[${message}]]*/ 'defaultanyvalue';

Thymeleaf 3 сейчас:

  • дисплей постоянно:

    <script th:inline="javascript">
    var MY_URL = /*[[${T(com.xyz.constants.Fruits).cheery}]]*/ "";
    </script>
    
  • экран значение переменной:

    var message = [[${message}]];
    
  • или в комментарии, чтобы иметь действительный код JavaScript, когда вы открываете файл шаблона статическим образом (без его выполнения на сервере).

    Thymeleaf называет это: JavaScript natural templates

    var message = /*[[${message}]]*/ "";
    

    Thymeleaf будет игнорировать все, что мы написали после комментария и перед точка с запятой.

дополнительная информация: http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#javascript-inlining

по данным документации есть несколько способов сделать подстановку.
Правильный путь вы должны выбрать исходя из ситуации.

1) Просто поместите переменную с сервера на javascript:

<script th:inline="javascript">
/*<![CDATA[*/

var message = [[${message}]];
alert(message);

/*]]>*/
</script>

2) объедините переменные javascript с переменными на стороне сервера, например, вам нужно создать ссылку для запроса внутри javascript:

<script th:inline="javascript">
        /*<![CDATA[*/
        function sampleGetByJquery(v) {
            /*[+
            var url = [[@{/my/get/url(var1=${#httpServletRequest.getParameter('var1')})}]] 
                      + "&var2="+v;
             +]*/
            $("#myPanel").load(url, function() {});
        }
        /*]]>*/
        </script>

одна ситуация, которую я не могу решить - тогда мне нужно пройти переменная javascript внутри метода Java, вызывающего внутри шаблона (это невозможно, я думаю).

//Use this in java
@Controller
@RequestMapping("/showingTymleafTextInJavaScript")
public String thankYou(Model model){
 model.addAttribute("showTextFromJavaController","dummy text");
 return "showingTymleafTextInJavaScript";
}


//thymleaf page  javascript page
<script>
var showtext = "[[${showTextFromJavaController}]]";
console.log(showtext);
</script>

Я видел, как такие вещи работают в дикой природе:

<input type="button"  th:onclick="'javascript:getContactId(\'' + ${contact.id} + '\');'" />

Comments

    Ничего не найдено.