我正在尝试将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品牌字符串,而models字符串应为java models字符串。
我认为,我无法将json字符串正确绑定到java字符串,这就是为什么我得到空值的原因。那我该如何解决这个问题呢?
谢谢。
答案 0 :(得分:0)
除了托马斯的评论(对不起,我还不能发表评论): 您的端点接受一个CreateAds类的对象,并且您正在显示名为Ads类的POJO声明。
答案 1 :(得分:0)
我不会谈论您的UI代码。
控制器:
@PostMapping("/create/ads")
public String submitForm(@RequestBody 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 ArrayList<String> models = new ArrayList<>();
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public ArrayList<String> getModels() {
return models;
}
public void setModels(ArrayList<String> models) {
this.models = models;
}
}
我发现您的JSON对象也是错误的。请参考下面的JSON对象。
{
"brand": "Acura",
"models": [
"2.2CL",
"2.3CL",
"3.0CL",
"TL",
"TSX",
"Vigor",
"ZDX"
]
}
我使用POSTMan并尝试过。它是工作代码。试试吧。