吐槽:当时我是真的气的想砸电脑 ,起初怎么调试都不过,400和415 我这辈子都不想在看到。
好 废话不多说 上代码:
前端ajax提交:
function save() {
var foolTitle = $("#foolTitle").val();
var foolMakeTime =$("#foolMakeTime").val();
var foolPrice =$("#foolPrice").val();
var foolShopId= $("#foolShopId").val();
var fm = {foolTitle:foolTitle,foolMakeTime:foolMakeTime,foolPrice:foolPrice,foolShopId:foolShopId};
alert(JSON.stringify({"foolSeas":foolSeas,"fm":fm}));
if(checkFormInfo() && foolTitleIsOK ){
$.ajax({
url:projectName+'/user/addFoolMenuLibrary',
type:'POST',
//请求头一定要加,不加直接进不了后台的接口中去
contentType:"application/json;charset=utf-8",
//备注:fm是提前封装好的对象,foolSeas是数组。
data:JSON.stringify({"foolSeas":foolSeas,"foolLibraryMenu":fm}),
success:function(result) {
alert("success");
formRestInfo("#menuForm");
$("#foolSeasData").empty();
top.Dialog.close();
},error:function(){
alert("error");
}
})
}
}
后台接收:我是用一个包含了所有数据的pojo对象进行接收,接收对象需添加@RequestBody注解,通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上
@RequestMapping(value = "addFoolMenuLibrary", method = RequestMethod.POST)
public ResponseEntity<Void> addFoolMenu(@RequestBody(required = true) FoolMenuAllInfo fm, HttpSession session) {
try {
User user = (User) session.getAttribute(Const.SESSION_USER);
FoolLibraryMenu flm = fm.getFoolLibraryMenu();
// 如果为0说明是 后台添加
if (flm.getFoolShopId() == 0) {
flm.setFoolShopId(null);
flm.setFoolAddUserId("admin");
} else {
flm.setFoolIsShop(Integer.parseInt(user.getUSER_ID()));
flm.setFoolAddUserId(user.getUSERNAME());
}
this.foolLibraryMenuService.saveSelective(flm);
FoolLibraryMenu f = this.foolLibraryMenuService.queryOne(flm);
this.foolSeasService.saveAll(fm.getFoolSeas());
// 查看
return ResponseEntity.status(HttpStatus.CREATED).build();
} catch (Exception e) {
e.printStackTrace();
}
// 出错500
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}
bean类:
import java.util.List;
public class FoolMenuAllInfo {
private FoolLibraryMenu foolLibraryMenu;
private List<FoolSeas> foolSeas;// 前端传过来的数组会封装成list对象
public FoolLibraryMenu getFoolLibraryMenu() {
return foolLibraryMenu;
}
public void setFoolLibraryMenu(FoolLibraryMenu foolLibraryMenu) {
this.foolLibraryMenu = foolLibraryMenu;
}
public List<FoolSeas> getFoolSeas() {
return foolSeas;
}
public void setFoolSeas(List<FoolSeas> foolSeas) {
this.foolSeas = foolSeas;
}
@Override
public String toString() {
return "FoolMenuAllInfo [foolLibraryMenu=" + foolLibraryMenu + ", foolSeas=" + foolSeas + "]";
}
}
最后:踩坑之路没有尽头 ,能学到东西就是好事,遇到问题不用急 找到问题根源,借助工具,慢慢解决就好了。 一定要在这条路上越走越远。