Scala: проверка остальных параметров в контроллере

Я пытаюсь проверить языковой параметр, поступающий из RESTful API. Я хочу изменить en_US на en-US, но входящие параметры определены как val.

Я понимаю, что типы val не могут быть переназначены, но как мы проверяем параметры. Вот мой код контроллера.

def create = Action.async(parse.json) { implicit rs =>
    var feedback = rs.body.validate[FeedbacksView]
    feedback.fold(
      errors => {
        play.api.Logger.debug(JsError.toJson(errors).toString())
        Future.successful(BadRequest(Json.obj("message" -> JsError.toJson(errors))))
      },
      feedbackView => {
        feedbackService.createUpdate(feedbackView,"quality_feedback_created").map { result =>
          val updatedFeedbackView = result.feedbacks.headOption.get.copy(id = Some(result.feedbacks.headOption.get.id.get))
          Ok(Json.toJson(updatedFeedbackView))
        }
      }
    )
  }

А вот и мой класс отзывов FeedbacksView.

case class FeedbacksView(feedbacks: Seq[FeedbackView] = Seq.empty) {

}

А вот и мой класс Case FeedbackView.

case class FeedbackView(id: Option[UUID] = None,
                        targetLanguage: String,
                        feedbackNotes: Option[String] = None
                       ) {
  targetLanguage = targetLanguage.replace("_", "-"); // Val reassignment error

Как мне сделать targetLanguage изменчивым?

1 ответ

После настройки моего поискового запроса Google я нашел ответ. В Scala вы должны явно описать параметр RESTful API как "var" в контроллере. Вот сообщение о переполнении стека, которое я нашел.

Неожиданная ошибка: переназначение в val

Другие вопросы по тегам