2016-05-01 149 views
0

我使用的彈簧引導啓動,網絡,我想改變從上傳請求映射回了短信:改變彈簧MissingServletRequestPartException消息

@RequestMapping("/upload") 
public @ResponseBody String upload(@RequestParam("file") MultipartFile file){...} 

我有什麼對HTTP/1.1 404沒有發現是:

{"timestamp":1462064481371,"status":404,"error":"Not Found", 
"exception":"org.springframework.web.multipart.support.MissingServletRequestPartException", 
"message":"Required request part 'file' is not present","path":"/upload"} 

我想改變「必需請求部分‘文件’不存在」這樣的事情「參數缺少

012。

有沒有一個簡單的方法來完成這個註釋?

如果可能,我想排除異常信息。

謝謝。

回答

0

好,最好的解決方案至今被重寫整個ResponseBody:

@ExceptionHandler(MissingServletRequestPartException.class) 
    public @ResponseBody Map<String,String> handleMissingServletRequestPartException(Exception exception, HttpServletResponse response) { 
     Map<String,String> errorMap = new HashMap<String,String>(); 
     errorMap.put("message","missing parameter"); 
     response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value()); 
     return errorMap; 
    } 

...

{ 「消息」: 「缺少參數」}

0

此異常由ResponseEntityExceptionHandler處理。 您可以擴展它並覆蓋方法handleMissingServletRequestPart。這可能看起來像這樣:

@ControllerAdvice 
public class RequestExceptionHandler extends ResponseEntityExceptionHandler { 

    @Override 
    protected ResponseEntity<Object> handleMissingServletRequestPart(MissingServletRequestPartException ex, HttpHeaders headers, HttpStatus status, WebRequest request) { 
    MyCustomErrorResource error = new MyCustomErrorResource("missing parameter"); 
    return handleExceptionInternal(ex, error, headers, status, request); 
    } 
}