В Spring MVC 3 как вы можете использовать следующее тело запроса x-form-urlencoded? - PullRequest
1 голос
/ 04 февраля 2012

Тело запроса выглядит следующим образом:

invoice[id]=111&invoice[billingDatetime]=2012-02-03T21:49:33+00:00&customer[code]=MILTON_WADDAMS&transaction[id]=f5574752-4eb0-11e1-a628-40403c39f8d9&transaction[transactedDatetime]=2012-02-03T21:49:33+00:00&invoice[type]=subscription&transaction[amount]=651.85&transaction[response]=approved&invoice[invoiceNumber]=3524&customer[id]=kui

У меня есть следующий код для обработки вышеуказанного запроса, но он не может разобрать тело запроса в объекте накладной и клиенте. Любое предложение с благодарностью!

public ModelAndView postPaymentSuccess(@ModelAttribute("invoice") Invoice invoice,@ModelAttribute("customer) Customer customer,HttpServletRequest req, HttpServletResponse res) {
    .......}

1 Ответ

0 голосов
/ 24 марта 2012

Если вы хотите, чтобы ваша форма представляла несколько объектов, часто проще создать новый объект для представления всей формы, и у этого нового объекта есть поля для других объектов. Для вашего случая что-то вроде этого:

public class CustomerInvoiceForm {
  private Invoice invoice;
  private Customer customer;
  // getters and setters
  ...
}

public ModelAndView postPaymentSuccess(@ModelAttribute("customerInvoiceForm") CustomerInvoiceForm, ...) {
  ...
}

Тогда ты будешь ближе к тому, чтобы Spring связывал так, как ты этого хочешь. Spring не использует квадратные скобки в именах параметров запроса для обозначения вложенных полей, хотя он использует точки / точки. Таким образом, вместо "invoice [id]" вы должны использовать "invoice.id".

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...