@Visteras
Любознателен, интересуюсь новым и старым :)

Play Framework приходит форма, как корректно ее обработать?

Мне приходит форма вот в таким виде:
Form(play.api.data.ObjectMapping3@7eeacad9,Map(action -> user_auth, args[accountName] -> Login, args[code] -> code123, secret_key -> secret_key111)..
Мне надо корректно вытащить значения args.accountName и args.code
Я создал такие case class:
case class Args(accountName: String, code: String)
case class MyClass(action: String, args: Args, secret_key: String)

Обрабатываю вот так:
object MyClassForm {
  val form = Form(mapping(
    "action" -> nonEmptyText,
    "args" -> mapping(
      "accountName" -> nonEmptyText,
      "code" -> nonEmptyText
    )(Args.apply)(Args.unapply),
    "secret_key" -> nonEmptyText
  )(MyClass.apply)(MyClass.unapply)
  )
}


Но видимо я что-то сделал не так, т.к. при получении запроса вижу:
error: Form(play.api.data.ObjectMapping3@7eeacad9,Map(action -> user_auth, args[accountName] -> Login, args[code] -> 32112ds, secret_key -> 312),List(FormError(args.accountName,List(error.required),List()), FormError(args.code,List(error.required),List())),None)

Что я сделал не так? И как это исправить?
  • Вопрос задан
  • 250 просмотров
Пригласить эксперта
Ответы на вопрос 1
mrRontgen
@mrRontgen
Scala lover.
Согласно документации Play Framework,

Note: When you are using nested data this way, the form values sent by the browser must be named like address.street, address.city, etc.
(ссылка)

Вы же пытаетесь распарсить форму вида

args[accountName] -> Login, args[code] -> code123,

Я полагаю, в этом и есть проблема. Мне кажется, самым простым решением в этом случае будет сделать препроцессинг реквеста и поменять в нем названия переменных.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы