我很难抓住错误:
org.springframework.web.multipart.MultipartException
我有以下代码:
final class UploadTextCommand {
MultipartFile contents
static constraints = {
}
}
另外,为了处理文件的帖子,我有这个动作:
def upload = { UploadTextCommand ->
...code...
}
我在“application.yml”文件中有这些设置来强制错误:
controllers:
upload:
maxFileSize: 100
maxRequestSize: 100
所以我可以可靠地重新创建异常,但是在浏览器显示一个可怕的视图之前我无法捕获它:
HTTP Status 500 - Request processing failed;
nested exception is org.springframework.web.multipart.MultipartException
请告诉我如何在Grails中捕获此错误。只需在上传操作中使用try / catch就会失败。
根据评论者的要求添加了堆栈跟踪:
javax.servlet.ServletException: org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (318635) exceeds the configured maximum (100000)
grails.plugin.cache.web.filter.AbstractFilter.logThrowable(AbstractFilter.java:116)
grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:70)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:73)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:113)
org.springframework.boot.context.web.ErrorPageFilter.forwardToErrorPage(ErrorPageFilter.java:188)
org.springframework.boot.context.web.ErrorPageFilter.handleException(ErrorPageFilter.java:171)
org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:135)
org.springframework.boot.context.web.ErrorPageFilter.access$000(ErrorPageFilter.java:61)
org.springframework.boot.context.web.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:95)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:113)
答案 0 :(得分:0)
您可以在堆栈跟踪中找到:
请求被拒绝,因为它的大小(318635)超过了 配置最大值(100000)
并在您的代码中:
controllers:
upload:
maxFileSize: 100
maxRequestSize: 100
您应该超过maxFileSize
,但是如果您想要处理异常check this solution。恕我直言清洁解决方案将实现您自己的before filter
或interceptor
。