【问题标题】:How can I handle 404 error with GWT?如何使用 GWT 处理 404 错误?
【发布时间】:2012-07-27 23:46:27
【问题描述】:

我有一个 GWT 2.4 网络应用程序。我想通过以下方式处理 HTTP 错误代码:根据代码将用户发送到不同的 GWT 页面。 是的,我知道 GWT 只有一个动态页面,所以我想为此使用 Places。我在 web.xml 中添加了以下几行:

   <error-page>
        <error-code>404</error-code>
        <location>/index.html#error:404</location>
    </error-page>

我认为这应该将用户重定向到我的 GWT 应用并显示与该位置对应的视图。但这根本行不通。当我尝试访问不存在的资源时显示一个空白页面。

一个地方本身存在,可以通过 ../index.html#error:404 URL 毫无问题地访问。所以问题出在服务器端。可能是服务器无法将我重定向到实际上不存在的页面?

那么,如何使用 GWT 处理 404 和其他错误?

【问题讨论】:

  • 您应该详细说明您使用哪种机制进行通信以及何时发生服务器错误。
  • 我想处理两种情况:如果用户手动输入错误的地址,则出现 404 服务器错误,以及对 GWT 客户端中所有未捕获的异常进行全局错误处理。

标签: gwt error-handling http-status-code-404 web.xml


【解决方案1】:

当客户端从服务器取回数据时,需要在客户端进行错误处理和重定向。

您是否使用 RequestBuilder 或 RequestFactory 来处理该通信?如果是这样,您可以在 RequestBuilder 响应状态上检测到 404 并使用 placeController.goTo(new ErrorPlace(404));(或者您已经设置了您的位置)

【讨论】:

  • 感谢您的回复,checketts!这正是我的做法。但是还有两种情况我要处理:如果用户手动输入错误的地址,则会出现 404 服务器错误,以及对所有未捕获的异常进行全局错误处理。
  • 您需要在服务器端使用单独的处理程序。
  • 对于全局异常处理,您可以在服务器端执行此操作。我正在使用 Spring WebMVC 并且异常处理工作得很好,因为它设置了 Http 状态代码,所以如果用户手动浏览到其余调用,他们会得到相同的行为,并且我的 RequestBuilder 子类在客户端进行重定向。
  • >您需要在服务器端有一个单独的处理程序 - 据我了解,404 错误通常是通过使用 web.xml 中的错误页面标记将用户发送到错误页面来处理的。我不明白为什么它在 GWT 中不起作用。
【解决方案2】:

您使用的是 Google App Engine 吗?如果是,则无法定义自定义 404 处理程序。看看这里的文档:

https://developers.google.com/appengine/docs/java/config/webxml#Error_Handlers

无论如何,无论如何,您都需要定义您的 /*(捕获所有)servlet 映射,该映射在其上面的所有其他映射都无法匹配后执行。在该 servlet 中,您应该重定向到您的自定义页面。

<!-- ERROR 404 replacement -->
<servlet>
    <servlet-name>missingPageServlet</servlet-name>
    <servlet-class>com.myproject.MissingPageServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>missingPageServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

希望有所帮助。

【讨论】:

    猜你喜欢
    • 2011-11-20
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 2013-05-01
    • 2013-04-14
    • 1970-01-01
    相关资源
    最近更新 更多