1

Я использую Play Framework 2.1Как привязать поля формы к модели, если имена свойств различны?

У меня есть запрос POST, поступающий из внешней системы и пытающийся привязать его к моей модели, но имена свойств модели отличаются от имен параметров в запросе: запрос имеет «body-plain» и у модели есть «bodyPlain» и т. д. Как я могу указать отображение из имен форм на имена свойств модели?

Я пытаюсь связать модель, как это:

Form<MailGunMessageData> mgDataForm = form(MailGunMessageData.class); 
MailGunMessageData mgData = mgDataForm.bindFromRequest().get(); 

ответ

1

Вам не нужно связываться с вашей каждый раз, вы можете просто использовать DynamicForm, а затем связать только выбранные поля из любых данных:

DynamicForm df = form().bindFromRequest(); 
MailGunMessageData mgData = new MailGunMessageData(); 

mgData.mail = df.get("email-address"); 
+0

Мне понравилось, что вы предложили. Я надеялся, что есть более элегантное решение, например, переход на карту имени-имени или предоставление некоторых комментариев для моделирования полей и т. Д. –

+0

Ну, вам также нужно заполнить карту, так что вместо этого просто создайте конструктор в своей модели и передайте весь DynamicForm к нему. Это будет полезно, если вы собираетесь использовать эту привязку в нескольких местах. – biesior

+0

Я думаю, что такой пользовательский конструктор внесет неоправданную зависимость между моей моделью и Play –