2016-07-17 1 views
1

мне нужно отправить две формы с одной кнопки отправки, поэтому я сделал функцию JS:Как конвертировать строку в объект в Spring MVC

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; 
    } 

} 

Так в контроллере, параметр "БЛАНК ЗАКАЗА" выглядит следующим образом: «компания = ROYAL_MOVING & sizeOfM ove = STUDIO ... "

Как преобразовать параметры строки в OrderForm и PaymentsDetailsForm? Или этот вопрос (представлять и обрабатывать несколько форм одним способом) может быть решен каким-то другим способом?

ответ

2

Это строка JSON, поэтому не беспокойтесь. Вы можете выполнять поиск в Google, так как существует множество способов десериализации строки JSON в объект.

Еще один способ заключается в том, что первая строка разделения из & знака, а затем снова разделяет каждую группу из знака = и теперь вы можете сопоставить эти значения с вашим объектом в цикле.