Как отформатировать ответ от сервлета, чтобы додзё не возвращало исключение - PullRequest
0 голосов
/ 28 января 2019

В соответствии с руководством по додзё и несколькими примерами здесь, я пытаюсь отправить несколько файловых справок.Файлы к сервлету поступят в каталог, но додзё выдаст исключение

Я использую додзё 1.10 и javax.servlet.http.HttpServlet v3.0.1

        PrintWriter out = response.getWriter();
        try {

            if (ServletFileUpload.isMultipartContent(request)) {
                try {
                    @SuppressWarnings("unchecked")
                    List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
                    for (FileItem item : multiparts) {
                        if (!item.isFormField()) {
                            String name = new File(item.getName()).getName();
                            item.write(new File("/tmp/eshop/" + File.separator + name));
                        }
                    }
                    out.print("[{uploadresult:'Upload is ok!'}]");

                } catch (Exception ex) {
                    out.print("{uploadresult: 'File upload failed due to : '" + ex+"}");
                }
            } else {
                out.print("{uploadresult:'Sorry this servlet only handles file upload request.'}");

            }
             out.close();


        } catch (Exception e) {
            logger.error(e);
        }

Сгенерирована ошибка:

/ dojo / v1.10 / dojox / form / uploader / _HTML5.js: 80 Ошибка синтаксического анализа результата сервера: SyntaxError: Неожиданный токен u в JSON в позиции 2 в JSON.parse () вObject.eval (/dojo/v1.10/dojox/form/uploader/_HTML5.js:76) в XMLHttpRequest.(dojo.js: 15) (анонимно) @ /dojo/v1.10/dojox/form/uploader/_HTML5.js:80 /dojo/v1.10/dojox/form/uploader/_HTML5.js:81 [{uploadresult: 'Загрузка в порядке!'}]

1 Ответ

0 голосов
/ 29 января 2019

Прежде всего, установите ответ в формате json

добавьте сначала response.setContentType("application/json");

И вам нужно правильно отформатировать json, добавив кавычки к ключу, например:

response.setContentType("application/json");
PrintWriter out = response.getWriter();
try {

    if (ServletFileUpload.isMultipartContent(request)) {
        try {
            @SuppressWarnings("unchecked")
            List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
            for (FileItem item : multiparts) {
                if (!item.isFormField()) {
                    String name = new File(item.getName()).getName();
                    item.write(new File("/tmp/eshop/" + File.separator + name));
                }
            }
            out.print("[{'uploadresult':'Upload is ok!'}]");

        } catch (Exception ex) {
            out.print("{'uploadresult': 'File upload failed due to : '" + ex+"}");
        }
    } else {
        out.print("{'uploadresult':'Sorry this servlet only handles file upload request.'}");

    }
     out.close();


} catch (Exception e) {
    logger.error(e);
}
...