- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Spring MVC 中实现文件 uploader Controller 时,我遇到了一个问题。我的代码快照如下。
@Controller
public class FileUploader extends AbstractBaseController implements HandlerExceptionResolver
{
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
@ResponseBody
public JSONObject handleFileUpload(@RequestParam("file") MultipartFile file)
{
JSONObject returnObj = new JSONObject();
if (file.isEmpty())
{
returnObj.put("success", "false");
returnObj.put("message", "File is empty");
}
else
{
try
{
//my file upload logic goes here
}
catch (Exception e)
{
returnObj.put("success", "false");
returnObj.put("message", "File not uploaded.");
}
}
return returnObj;
}
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object obj, Exception exception)
{
ModelAndView model = new ModelAndView();
Map map = new HashMap();
if (exception instanceof MaxUploadSizeExceededException)
{
// I want to return JSONObject from here like given below.
/**
* { "message":"File size exceeded", "success":"false" }
* */
map.put("message", "File size exceeded");
map.put("success", "false");
model.addObject(map);
}
return model;
}
}
我的 spring 配置看起来像
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<property name="maxUploadSize" value="300000"/>
</bean>
现在在我的 Controller 中,我想在我的 Controller 的 resolveException 方法中返回 JSONObject 而不是 ModelAndView,如代码快照中给出的那样,因为我正在开发一些类似 REST 的方法来上传文件。
有什么想法吗?谢谢
最佳答案
如果你使用上面的Spring 3.2,我推荐这种方式。
首先,声明ControllerAdvice。
@Controller
@ControllerAdvice
public class JAttachfileApi extends BaseApi
并使异常处理程序响应如下 JSON 对象。
@ExceptionHandler(MaxUploadSizeExceededException.class)
public @ResponseBody Map<String,Object> handleMaxUploadSizeExceededException(
MaxUploadSizeExceededException ex)
{
Map<String,Object> result = getResult();
JFileUploadJsonResponse errorResult = new JFileUploadJsonResponse();
errorResult.setError("Maximum upload size of "+ex.getMaxUploadSize()+" bytes exceeded.");
List<JFileUploadJsonResponse> resultData = new ArrayList<JFileUploadJsonResponse>();
resultData.add(errorResult);
result.put("files", resultData);
return result;
}
关于json - Spring MVC中HandlerExceptionResolver的resolveException方法如何返回JSON对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20682195/
我已经注释了 Controller ,其中包含映射到网址上的几种方法。像这样: @Controller public class CategoryController { @RequestMappin
我想使用HandlerExceptionResolver来处理与请求问题相关的异常,例如404和其他错误代码。 Tomcat 似乎无需查看 Spring 即可响应这些错误。有没有办法让HandlerE
我的项目中有一个 Spring AbstractHandlerExceptionResolver 的实现。此处理程序负责处理从 Controller 抛出的所有异常。在大多数情况下,这在处理我们的异常
Spring 3.2介绍@ControllerAdvice用于处理 Spring MVC 应用程序中的异常的注释。但在此版本之前,Spring 有 @ExceptionHandler或 Handler
我目前正在尝试使用 HandlerExceptionResolver用于 Spring MVC 项目中的异常处理。 我想通过 resolveException 处理正常的异常以及 404 的通过han
我正在升级到 Spring 3.2.2,但出现以下错误。 ERROR: org.springframework.web.servlet.DispatcherServlet - Context init
Javadoc 说 AnnotationMethodHandlerExceptionResolver , ResponseStatusExceptionResolver和 DefaultHandler
背景 我有一个错误消息类: @XmlRootElement public class ErrorMessage { private String message; public Err
我是一名优秀的程序员,十分优秀!