2014-11-24 33 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-iteration/26780798#26780798 – grid 2014-11-29 08:44:44

回答

3

也沒有辦法,你可以訪問模型atributes因此它們在服務器端和渲染JSP在HTML,當他們在那裏失去了

2

還有值得一提的一個解決辦法:寫出來的屬性

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

,然後用使用JavaScript

document.getElementById("myvar").value 

或一些類似的jQuery調用讀它:

$('#myvar').text() 

這是不雅,但它的作品。

+0

是的,你是對的。這是一個方法 – 2015-05-14 20:34:00

+0

跨越'價值'可能會給'未定義'。你可以使用'span.innerHTML' – 2018-01-15 05:24:42

0

您可以:

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

,然後在你的Javascript:

document.getElementById("span_id").innerHTML