我需要提交两个表单和一个提交按钮,所以我做了JS功能:
var submitAllForms = function(){
var paymentForm = $("#paymentsDetailsForm").serialize();
var orderForm = $("#orderForm").serialize();
$.ajax({
method: "post",
url: "/order",
dataType: 'json',
data: { paymentsDetailsForm : JSON.stringify(paymentForm), orderForm : JSON.stringify(orderForm) },
success: alert('form has been sent')
});
}
有我的表格:
@Data
public class PaymentDetailsForm implements Serializable {
private Date storageDate;
private String paymentMethod;
...
}
@Data
public class OrderForm implements Serializable {
private String company;
private String sizeOfMove;
...
}
有我的控制器:
@RequestMapping(value = "/order", method = RequestMethod.POST)
public ModelAndView handleOrder(String paymentsDetailsForm, String orderForm) {
// How to cast paymentsDetailsForm to PaymentsDetailsForm
// How to cast orderFormto OrderForm
ModelAndView model = new ModelAndView();
model.addObject("paymentsDetailsForm", new PaymentDetailsForm());
model.setViewName("/order");
return model;
}
}
所以在控制器中,参数" orderForm"看起来像:"公司= ROYAL_MOVING& sizeOfMove = STUDIO ..."
如何将字符串参数转换为OrderForm和PaymentsDetailsForm?或者这个问题(在一个方法中提交和处理多个表单)可能会以另一种方式解决?
答案 0 :(得分:2)
它是一个JSON字符串,所以不要担心。您可以在Google中进行搜索,因为有很多方法可以将JSON字符串反序列化为对象。
另一种方法是来自&的第一个分裂字符串签名然后再从=符号中拆分每个组,现在您可以将这些值与您的对象一起映射到循环中。