簡體   English   中英

Spring / Jboss-當前請求不是多部分請求

[英]Spring/Jboss - Current Request is not multipart request

我正在嘗試創建一個REST Web服務,用戶在其中發送帶有一些參數的httpPostrequest。 這是我的代碼

@RequestMapping(value="/SubmitDetails")
@ResponseBody
public String saveCase(@RequestParam("details") String details){
       //Do SomeWork
     return "some response";
}

但是,當我從瀏覽器訪問此URL時,它會拋出:

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Current request is not a multipart request
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

root cause

org.springframework.web.multipart.MultipartException: Current request is not a multipart request
    org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue(RequestParamMethodArgumentResolver.java:188)
    org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:104)
    org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
    org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

這段代碼在Tomcat上可以正常使用,但在JBOSS 4.2上不能使用

對於發帖請求,我正在使用Android的Volly:

void HttpStringRequest(final int request , String url, final Map<String,String> keyVal){

    StringRequest stringRequest = new StringRequest(request, url, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Helper.getmHelper().v(this.getClass().getName()+":RESPONSE:",response);

            hideProgress();
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Helper.getmHelper().v(this.getClass().getName()+":ERROR:","Error");

            hideProgress();
        }
    }
    ) {
        @Override
        protected Map<String, String> getParams() {
            Iterator<Map.Entry<String, String>> it = keyVal.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry<String, String> pairs = (Map.Entry<String, String>) it.next();
                Helper.getmHelper().v(pairs.getKey(), pairs.getValue());
            }
            return keyVal;
        }

       @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Content-Type", "text/plain; charset=utf-8");
            return headers;
        }


    };
    stringRequest.setRetryPolicy(new DefaultRetryPolicy(60*1000,0,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    queue.add(stringRequest);
}

檢查是否在Spring-Servlet.xml中添加了CommonsMultipartResolver。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

然后,將enctype添加到表單中的multipart / form-data中:

<form id="fileupload" method="post" enctype="multipart/form-data">

最后在Controller中,請求> MultipartHttpServletRequest:

@RequestMapping(value="/SubmitDetails"  method = RequestMethod.POST)
public String saveCase(MultipartHttpServletRequest request) {}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM