powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring MVC Ajax Upload не могу нормально получить JSON ответ от контроллера
7 сообщений из 7, страница 1 из 1
Spring MVC Ajax Upload не могу нормально получить JSON ответ от контроллера
    #37649444
Usik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил написать асинхронный загрузчик файлов на сервер при помощи Spring MVC+ либа ajaxupload

Код метода со странички
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<script type="text/javascript">
    function ajaxFileUpload() {
        $.ajaxFileUpload({
                    url:"uploadFile",
                    secureuri:false,
                    dataType: 'json',
                    fileElementId:'fileData',
                    success: function (data, status) {
                        alert(data['msg']);
                    },
                    error: function (data, status, e) {
                        alert(data['msg']);
                    }
                }
            )
    }
</script>



Код контроллера

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
@Controller
@RequestMapping
public class MyController implements ServletContextAware,HandlerExceptionResolver {

    @RequestMapping(value = "/someurl",method = RequestMethod.GET)
    public String getForm(Model model,HttpServletRequest request){
        try {
            model.addAttribute("uploadModel",new UploadModel());
        } catch (Exception e) {
            e.printStackTrace();
        }
      return "/somefolder/somepage";
    }


    @RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
    public void handleFileUpload(UploadModel uploadItem,HttpServletRequest request,HttpServletResponse response){
        response.setContentType("text/html;charset=UTF-8");
        try {
            response.getWriter().print("{msg: 'success',error:''}");
            
        } catch (IOException e) {
            e.printStackTrace();  
        }
    }

    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object o, Exception exception) {
        String responseError="";
        Map<Object, Object> model = new HashMap<Object, Object>();
        if (exception instanceof MaxUploadSizeExceededException) {
            responseError="{msg: 'bigsize'}";
        } else {
            responseError="{msg: 'fail'}";
        }
        response.setContentType("text/html;charset=UTF-8");
        try {
            response.getWriter().print(responseError);
        } catch (IOException e1) {
            e1.printStackTrace();  
        }
        model.put("uploadModel", new UploadModel());
        return new ModelAndView("/somefolder/somepage", (Map) model);
    }
}



Заметил такую особенность если размер файла не превышает указанный, то все норм, на страничке в функции success я имею JSON структуру. А если размер файла превышает указанный то

Код: html
1.
2.
3.
 error: function (data, status, e) {
                        alert(data['msg']);
                    }



Показывает undefined.Если же в контроллере дописать строчку в методе resolveException дописать
response.getWriter().close();
То в функции error на HTML страничке я вижу JSON сообщение, но появляется исключение


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
javax.servlet.jsp.JspTagException:
	at org.apache.taglibs.standard.tag.common.core.ImportSupport.acquireString(ImportSupport.java:306)
	at org.apache.taglibs.standard.tag.common.core.ImportSupport.doEndTag(ImportSupport.java:171)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
	at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:229)
	at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
	at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1031)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:815)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:662)




А если эту строчку (response.getWriter().close()) дописать в функцию handleFileUpload , и размер файла будет допустимым, то исключение не появляется.

Хотелось бы понять что я не так делаю, нужно чтобы в обоих методах success и error я мог получить JSON сообщение, и чтобы исключения не было
...
Рейтинг: 0 / 0
Spring MVC Ajax Upload не могу нормально получить JSON ответ от контроллера
    #37649815
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usik,

Обратите внимание на аннотацию @ResponseBody
ajax-simplifications-in-spring-3-0/
...
Рейтинг: 0 / 0
Spring MVC Ajax Upload не могу нормально получить JSON ответ от контроллера
    #37650512
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Spring MVC Ajax Upload не могу нормально получить JSON ответ от контроллера
    #37650538
Usik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок посмарю ссылки , а вот еще вопрос, нужно ли закрывать writer , если я его взял response.getWriter() или нет?
...
Рейтинг: 0 / 0
Spring MVC Ajax Upload не могу нормально получить JSON ответ от контроллера
    #37650620
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня такаяже проблема как тут:
http://www.javatalks.ru/sutra139804.php
Не знаю как нормально решить вопрос с чарсетом этим.
...
Рейтинг: 0 / 0
Spring MVC Ajax Upload не могу нормально получить JSON ответ от контроллера
    #37650629
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usik , а почему бы Вам не пользоваться готовой JSON вьюхой?
<bean name="jsonView" class="org.springframework.web.servlet.view.json.JsonView"/>
...
Рейтинг: 0 / 0
Spring MVC Ajax Upload не могу нормально получить JSON ответ от контроллера
    #37650694
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скачал примерчик
http://www.javabeat.net/articles/262-asynchronous-file-upload-using-ajax-jquery-progress-ba-1.html
Значит там библиотек не хватало. Скачал у апача библиотеки.

Запускается проект, закачивает файлы в нужную папку, но почемуто не отображает процесс загрузки. Сразу показывает размер файла и 100% загрузку. Потом показывает алерт(доне) и прячется после зугрузки. В общем как-то не доконца работает. Пробовал разных размеров файлы и в опере и в фаерфоксе и везде одно и тоже.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring MVC Ajax Upload не могу нормально получить JSON ответ от контроллера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]