Обработка как многочастных, так и не многочастных HTTP POST в Spring MVC - PullRequest
5 голосов
/ 15 июня 2011

У меня есть веб-сервис SpringMVC для загрузки файлов, который выглядит следующим образом:

@RequestMapping(value="/upload.json", method = RequestMethod.POST)
public @ResponseBody Map<String, Object> upload(MultipartHttpServletRequest request) {
    // upload the file
}

и все денди. Но если один из потребителей публикует не составную форму, я получаю это исключение

java.lang.IllegalStateException: Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest]

Что имеет смысл ... однако я не хочу, чтобы мои конечные пользователи видели 500 исключений сервлета. Я хочу дружеское сообщение об ошибке.

Я только что попробовал это (чтобы быть похожим на ловушку для других POST):

@RequestMapping(value="/upload.json", method = RequestMethod.POST)
public @ResponseBody Map<String, Object> upload2(){ 
// return friendly msg 
}

но я получаю эту ошибку:

java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path '/upload.json'

Есть ли способ безопасно обрабатывать как многочастные, так и не составные запросы POST? в одном методе или 2 разных методах мне все равно.

1 Ответ

14 голосов
/ 15 июня 2011

Проверьте, является ли запрос составным:

@RequestMapping(value="/upload.json", method = RequestMethod.POST) 
public @ResponseBody Map<String, Object> upload(HttpServletRequest request) {
    if (request instanceof MultipartHttpServletRequest) {
        // process the uploaded file
    }
    else {
        // other logic
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...