【发布时间】:2019-06-21 17:44:43
【问题描述】:
我正在尝试将一个 json 字符串传递给 (POJO) java 字符串,但在我的控制器中我没有将该 json 字符串作为 java 字符串。
在前端,
<form th:action="@{/create/ads}" th:object="${createAds}" method="post">
<div class="allWrap">
<ul class="dropList odaberiteMarku" th:field="${brand}">
</ul>
</div>
<div class="allWrap mt-s">
<ul class="dropList odaberiteModel" th:field="${model}">
</ul>
</div>
</form>
在控制器中,
@RequestMapping(value="/create/ads", headers="Accept=application/json", method=RequestMethod.POST)
public String submitForm(@RequestBody @ModelAttribute CreateAds ads, BindingResult result, Model model) {
if (result.hasErrors()) {
return "test";
}
System.out.println(ads.getBrand()+", "+ads.getModels());
return "successful";
}
在模型类中
public class CreateAds {
private String brand;
private String models;
//other variables
//all getters and setters
}
在我的 json 文件中。
[
{
"brand": "Acura",
"models": [
"2.2CL",
"2.3CL",
"3.0CL",
"TL",
"TSX",
"Vigor",
"ZDX"
]
}
]
在前端: 我有一个外部 json 文件,用于汽车制造商和基于汽车制造商的汽车型号。它在前端运行良好。
在后端: 我正在尝试将 json 字符串绑定到普通字符串,例如 json 品牌字符串应该是 java 品牌字符串,而模型字符串应该是 java 模型字符串。
我认为,我无法将 json 字符串正确绑定到 java 字符串,这就是我得到 null 值的原因。那么我该如何解决这个问题呢?
提前致谢。
【问题讨论】:
-
您的 json 不包含“模型字符串”,但
models是一个 array 字符串。这不能绑定到简单的 Java 字符串 - 您要么必须在 POJO 中使用数组/列表,要么选择模型字符串之一并仅发送该单个字符串。 -
对于模型,暂时还可以。但是为什么要为品牌字符串获取 null 值?
-
我对 spring boot 不太熟悉,但您的表单似乎不包含任何输入字段。您确定将“品牌”值发送回服务器吗?
-
"brand" 是来自该 json 文件的下拉列表。它应该去服务器,我从不使用 json 字符串 seding。这就是为什么我不确定该值是否发送到服务器。
-
嗯,您应该能够使用浏览器的开发人员工具来检查发布请求并检查正在发送的数据。
标签: java json spring-boot