GWT:如何从多部分表单(文件)上传返回(和处理)错误

Posted

技术标签:

【中文标题】GWT:如何从多部分表单(文件)上传返回(和处理)错误【英文标题】:GWT: How to return (and handle) an error from multipart form (file) upload 【发布时间】:2011-03-28 05:56:07 【问题描述】:

我有 Google Web Toolkit (Multipart) Form 将文件发布到我的 servlet。当 servlet 中发生错误情况时,我返回一个错误。当一切正常时,我返回一个 JSON 字符串。

    ...
    response.setContentType("text/html");
    response.setCharacterEncoding("UTF8");
    response.getWriter().write(out.toString());

 catch (FileUploadException e) 
    response.sendError(500, e.getMessage());
 catch (Exception e) 
    response.sendError(500, e.getMessage());

问题是我找不到在客户端处理这个问题的方法。这是在发布正常和返回错误代码时触发的事件。但我找不到如何找到它是否可以?以及如何从客户端代码中的异常中获取错误消息?

@UiHandler("form")
void submitComplete(SubmitCompleteEvent event)

    ...

【问题讨论】:

可以覆盖默认错误文档(在您的服务器配置中),以便它们只输出状态代码等 - 搜索“500”会更容易" 在响应中,然后解析整个默认错误页面。 @Igor Klimer:只为一个 servlet 更改服务器配置是否值得?为什么我找不到响应代码(200 或 500)? 嗯,很奇怪,您无法访问响应代码,就像在 RequestBuilder... 但现在似乎无能为力(也许在 GWT 的错误跟踪器上创建一个新问题/改进?)来自 GWT 组的两个相关线程:groups.google.com/group/google-web-toolkit/browse_thread/thread/… 和 groups.google.com/group/google-web-toolkit/browse_thread/thread/…。将响应的内容类型设置为text/html 似乎很重要,以确保它适用于所有浏览器(即使它实际上包含 JSON)。 @Igor Klimer 非常感谢 :) 看来我必须返回带有代码 200 的错误消息或更改服务器配置(或忽略从 servlet 返回的所有不正确 JSON 的内容) 很高兴我能帮上忙 :) 我添加了一个总结上述 cmets 的答案,以便其他人可以更轻松地找到这个问题的答案。 【参考方案1】:

目前,似乎没有合适的方法可用(如ResponsegetStatusCode)。您必须处理服务器在SubmitCompleteEvent.getResults() 中返回给您的错误文档。您可以通过在您的服务器上设置更易于解析/处理的自定义错误文档(您应该为您的生产服务器使用任何一种方式)来简化此任务。

GWT 的 Google 群组中的相关主题:one 和 two。

【讨论】:

以上是关于GWT:如何从多部分表单(文件)上传返回(和处理)错误的主要内容,如果未能解决你的问题,请参考以下文章

GWT - 从 FormPanel 上传文件后返回对象?

GWT文件上传表单提交POST请求无法读取文件

如何使用多部分/表单和分块编码在 spring mvc 中接收文件上传?

是否可以通过 GWT RPC Servlet 上传文件?

如何使用 GWT 上传文件

GWT 中的基本文件上传