2014-11-24 3 views
2

Я добавляю атрибут к моему ModelAndView весной и после этого пересылаю его на мой вид тимелеафа.Как получить доступ к атрибуту модели с переменной javascript

В представлении я есть следующий код:

<script th:inline="javascript"> 
     /*<![CDATA[*/ 
      var applicationName = /*[[${T(com.sample.constants.ApplicationConstants).MODEL_ATTR_COLLECTED_VALUES}]]*/ "Test"; 
      var collectedValueJson = [[${collectedValues}]]; 
      console.log(collectedUserJson); 
     /*]]>*/ 
</script> 

Результат от этого

var applicationName = 'collectedValues'; 
var collectedUserJson = '[{\"givenname\":\"Muster\",\"surname\":\"Peter\"}]'; 

Это нормально. Теперь мое желание в том, что я могу взять var application и получить с этой переменной атрибут modelattribute, но это не работает.

Результат таков:

var tmp2 = ${applicationName}; 

Другая попытка была, что у меня есть доступ к modelattribute с синтаксисом /*[[ ]]*/ с первой попытки:

var applicationName = ${/*[[${T(com.sample.constants.ApplicationConstants).MODEL_ATTR_COLLECTED_VALUES}]]*/}; 

Но результат будет:

var tmp = ${'collectedValues' 

Я понятия не имею, что я могу попробовать.

Любые другие предложения?

Спасибо заранее.

+0

, если ваша цель состоит в том, чтобы передавать данные от заднего конца к JS см http://stackoverflow.com/questions/26768947/thymeleaf-javascript-inlining-and-anderation/26780798 # 26780798 – grid

ответ

3

нет никакого способа, вы можете получить доступ к модели atributes, следовательно, они находятся на стороне сервера, и они, где теряются при визуализации JSP в HTML

2

Существует обходной путь, стоит отметить: Запиши атрибут

<span id="myvar" th:text="${attributeName}"></span> 

, а затем прочитать его с помощью JavaScript

document.getElementById("myvar").value 

или некоторый подобный JQuery вызов:

$('#myvar').text() 

Это неэлегантное, но оно работает.

+0

Да, вы правы. Это один из способов. –

+0

spans 'value' может давать' undefined'. вы можете использовать 'span.innerHTML' –

0

Вы можете:

<span id="span_id" style="display: none;" th:text="${attributeName}"></span> 

, а затем в вашем Javascript:

document.getElementById("span_id").innerHTML