javascript - 发送 Java 数组列表作为 JavaScript 参数
问题描述
问题
我通过model.addAttribute将一个数组从StarConroller.java发送到Star.jsp页面
StarConroller.java
List<SBook> books = booksService.findAll();
model.addAttribute("books ", books);
我想通过单击 Star.jsp 中的“显示书籍”按钮将这一系列书籍发送到 Star.js
星号.jsp
<button type="button" onclick="show(`${books}`)">Show books</button>
Star.js
function show(books) {
console.log(books);
}
当我单击“显示书籍”按钮时,我在控制台中得到以下信息
[SBook{SBookId=1, version=null, title='null', description='null'},
SBook{SBookId=2, version=null, title='null', description='null'},
SBookId{clauseId=3, version=null, title='null', description='null'}]
问题
但我需要一个 json 数组
更新 1
S书类
public class SBook{
private Integer sBookId;
private Integer version;
private String title;
private String description;
public SBook() {
}
public SBook(Integer sBookId, Integer version, String title, String description) {
this.sBookId= sBookId;
this.version = version;
this.title = title;
this.description = description;
}
//Getter & Setters
@Override
public String toString() {
return "SBook{" +
"sBookId=" + sBookId+
", version=" + version +
", title='" + title + '\'' +
", description='" + description + '\'' +
'}';
}
}
解决方案
您正在向 HTTP 响应添加对象列表,HTTP 模板引擎将使用toString
SBook 对象的方法将其转换为字符串。转换后的字符串不是有效的 JSON。
首先,您需要使用解析库将对象列表转换为 JSON 格式(我在下面的代码中使用 Jackson 库):
List<SBook> books = booksService.findAll();
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(List.of(sBook));
model.addAttribute("books ", books);
然后,您需要使用以下方法将此 JSON 字符串解析回 javascript 对象JSON.parse
:
function show(books) {
let parsed = JSON.parse(books);
console.log(parsed);
}
推荐阅读
- spring-boot - 为什么 @ComponentScan 然后 DataMongoTest 不起作用
- vue.js - svg 和 vue.js 的 onload 函数不会被调用,我应该使用 Mounted 吗?
- javascript - 将鼠标悬停在页面上的元素上时,在“正文”节点的底部打印“真”
- docker - Jenkins 插件安装给出 SHA-256 不匹配错误
- android - 如何检测用户已取消订阅?
- apache - EV SSL 上带有 3 个域的错误重定向
- if-statement - 如何在 JavaScript 中将 2 个数字与超过 1 个小数进行比较?
- python - 如何在 python 曲线拟合 scipy.optimize 处修复 location=0
- typescript - 将泛型参数传递给打字稿声明文件中的 React.FunctionComponent
- java - Spring Boot / JavaFX:添加仍然可以访问 JPA 的关闭挂钩(ctrl-c)