2014-11-24 101 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