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

在控制器中,我放入了简单的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对象,但是它们是相同的。我在此代码中做错了什么?


暮色呼如
浏览 715回答 1
1回答

aluckdog

在JavaScript中使用Thymeleaf变量时,不应将其作为传递String。相反,您应该像往常一样将变量添加到模型中:model.addAttribute("station", station);并让Thymeleaf自动将其转换为JavaScript(它将处理您的对象至JSON的转换,无需您使用Jackson):<script th:inline="javascript">&nbsp; &nbsp; var JSONtest = /*[[${station}]]*/ {};</script>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript