javascript - 将列表传递给 js、thymeleaf、springboot
问题描述
我想将一个列表从控制器传递到一个 javascript 文件并在 js 文件中迭代它。但是我在 js 中只得到了“未定义”。
我使用 Thymeleaf 模板,我的 js 文件与我的 html 分开。
//控制器
List<Bean> list = new ArrayList<Bean>();
model.addAttribute("list", list);
//html
<input id="list" type="hidden" th:value="${list}"/>
//javascript
var list=$('#list').val();
console.log("list: "+ list);
//[Bean(month=201805, date=2018-05-02),Bean(month=201804, date=2018-05-03)], which is correct
for(var i in list) {
console.log("date: "+ list[i].date); // I got undefined
console.log("month: "+ list[i].month); // I got undefined,too
}
我希望得到月份和日期的值,有人知道吗?
解决方案
与其将列表放入 html 元素中,不如将其直接放入 Javascript 中。像这样:
<script th:inline="javascript">
var list = /*[[${list}]]*/ [];
</script>
<script src="/your_other_javascript_file.js"></script>
你的循环不起作用的原因是它$('#list').val();
不是一个数组,它是一个字符串。循环遍历字符串不会达到您的预期。
推荐阅读
- docker - 在 Windows 虚拟机中运行 Docker
- c# - Unity 中平滑相机缩放的问题
- java - 将有界通配符 (? extends) 与转换器列表一起使用会导致类型不匹配错误
- javascript - 如果另一个集合的对象被删除,更新一个集合的 Firestore 对象?
- java - JasperRunManager 无法访问同一安全约束中的内容
- angular - Visual Studio 代码调试不适用于 Angular 6 CLI
- typescript - 将两个有向(可能是循环)图合并为一个
- java - 如何使用 JAXB 创建没有价值的 XmlElement
- jquery - 在 Gridview 中使用 TemplateField 和 jQuery 数据表
- javascript - 在 Angular js 中链接 3 个过滤器