У меня есть следующие действия контроллера, как форма почтового распознаватель:Play 2.2.1 Scala - Перенаправление для 413 REQUEST_ENTITY_TOO_LARGE
def importCompletionsSubmit(indexName: String) = AuthenticatedAction {
Action.async {
implicit request => {
completionsForm.bindFromRequest().fold(
errors => Future.successful(Ok(html.crudindex.importCompletionsForm(indexName, errors))),
completions => {
val autoCompletionService = new AutoCompletionService(new Elasticsearch)
autoCompletionService.importCompletions(indexName, completions.text) map {
result: BulkImportResult =>
if (result.error) Redirect(routes.ListIndices.index(Option.empty[String])).flashing("error" -> Messages("error.bulkItemsFailed", result.failures))
else Redirect(routes.ListIndices.index(Option.empty[String])).flashing("success" -> Messages("success.completionsAdded", result.requests))
}
}
)
}
}
}
Я знаю, что я могу изменить максимальное значение длины для этого действия, но то, что я хотел бы do отправляет пользователя обратно в форму с хорошим сообщением об ошибке, когда он вводит слишком много текста. Если тело запроса превышает максимальную длину по умолчанию, я получаю полностью пустую страницу, и только консоль браузера показывает «413 (Request Entity Too Large)». Я попытался поймать эту ошибку в моем глобальном объекте, но это ничего не изменило. Мне кажется, что глобальный триггер onError не вводится, когда парсер отправляет обратно страницу с ошибкой. Еще пустая страница. Я также попытался поймать эту ошибку внутри действия, но мне кажется, что код действия не введен, потому что парсер тела уже выбрасывает эту пустую страницу ошибок.
Есть ли способ отправить пользователя в действие формы, когда тело превышает максимальную длину?
Awesome, спасибо :) – MeiSign