无法从thymeleaf的javascript中解析JSON对象

时间:2019-03-27 14:23:07

标签: javascript json thymeleaf

在控制器中,我放置了一个简单的java对象,该对象使用杰克逊(Jackson)映射到JSON。

    Station station = stationRepo.findFirstByCodeEquals(320007);

    ObjectMapper objectMapper = new ObjectMapper();
    String JSONstation = objectMapper.writeValueAsString(station);
    model.addAttribute("station",JSONstation);

在前端,我使用Thymeleaf在标签中获取此对象:

<p id="test" th:text="${station}">Test 1</p>
<p id="test2">Test 2</p>
<p id="test3">Test 3</p>

然后我只需使用document.getElementById(“ test”)。innerText在javascript中获取此JSON对象,然后将其解析为js对象即可。

    var JSONtest = "[[${station}]]";
    var JSONstation = document.getElementById("test").innerText;

    document.getElementById("test2").innerHTML = typeof JSONtest;

    var jsStation = JSON.parse(JSONstation);


    document.getElementById("test3").innerHTML = JSONtest.rusName;

但是当我使用var JSONtest =“ [[$ {station}]]”从百里香中获取JSON对象时,我无法将其解析为js对象,但是它们是相同的。 我在这段代码中做错什么了?

1 个答案:

答案 0 :(得分:2)

在JavaScript中使用Thymeleaf变量时,不应将其作为String传递。相反,您应该像往常一样将变量添加到模型中:

model.addAttribute("station", station);

并让Thymeleaf自动将其翻译为JavaScript(它将处理您的对象到JSON的翻译,无需您使用Jackson):

<script th:inline="javascript">
    var JSONtest = /*[[${station}]]*/ {};
</script>