如何使用GWT处理404错误?

如何使用GWT处理404错误?,gwt,error-handling,http-status-code-404,web.xml,Gwt,Error Handling,Http Status Code 404,Web.xml,我有一个GWT2.4Web应用程序。我希望以以下方式处理HTTP错误代码:根据代码将用户发送到不同的GWT页面。 是的,我知道GWT只有一个动态页面,所以我想使用Places。我在web.xml中添加了以下行: <error-page> <error-code>404</error-code> <location>/index.html#error:404</location> </e

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

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

404
/index.html#错误:404
我认为这应该将用户重定向到我的GWT应用程序,并显示对应于该位置的视图。但这根本不起作用。当我尝试访问不存在的资源时,会显示一个空白页

位置本身存在,可以通过../index.html#错误:404 URL访问,没有问题。所以问题出在服务器端。可能是服务器无法将我重定向到实际上不存在的页面


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

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


您是否使用RequestBuilder或RequestFactory来处理该通信?如果是这样,您可以在RequestBuilder响应状态上检测到404,并使用
placeController.goTo(newerrorplace(404))(或者,无论您如何设置位置)

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


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

你在使用谷歌应用程序引擎吗?如果是,则无法定义自定义404处理程序。请看以下文档:

无论如何,不管怎样,您需要定义/*(catch all)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>

丢失页面servlet
com.myproject.MissingPageServlet
丢失页面servlet
/*

希望有帮助。

你在使用谷歌应用程序引擎吗?如果是,则无法定义自定义404处理程序。请看以下文档:

无论如何,不管怎样,您需要定义/*(catch all)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>

丢失页面servlet
com.myproject.MissingPageServlet
丢失页面servlet
/*

希望能有所帮助。

您应该详细说明您使用的通信机制以及服务器错误是何时发生的。我想处理两种情况:404服务器错误,如果用户手动输入错误的地址,以及GWT客户端中所有未捕获异常的全局错误处理。您应该详细说明您用于通信的机制以及服务器错误何时发生。我想处理两种情况:404如果用户手动输入错误的地址,服务器错误,以及GWT客户端中所有未捕获异常的全局错误处理。感谢回复,checketts!我就是这样做的。Bu我还想处理另外两种情况:如果用户手动输入错误的地址,404服务器错误,以及对所有未捕获的异常进行全局错误处理。服务器端需要单独的处理程序。对于全局异常处理,也可以在服务器端执行。我使用的是Spring WebMVC,异常处理非常有效,因为它设置了Http状态代码,因此如果用户手动浏览rest调用,他们会得到相同的行为,我的RequestBuilder子类在客户端执行重定向。>据我所知,服务器端需要一个单独的处理程序,404错误通常通过使用web.xml中的错误页面标记将用户发送到错误页面来处理。我不明白为什么它不能在GWT中工作。谢谢你的回复,checketts!我就是这样做的。Bu我还想处理另外两种情况:如果用户手动输入错误的地址,404服务器错误,以及对所有未捕获的异常进行全局错误处理。服务器端需要单独的处理程序。对于全局异常处理,也可以在服务器端执行。我使用的是Spring WebMVC,异常处理非常有效,因为它设置了Http状态代码,因此如果用户手动浏览rest调用,他们会得到相同的行为,我的RequestBuilder子类在客户端执行重定向。>据我所知,服务器端需要一个单独的处理程序,404错误通常通过使用web.xml中的错误页面标记将用户发送到错误页面来处理。我不明白为什么它在GWT中不起作用。