如何使用GWT处理404错误?

时间:2012-07-30 10:06:14

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

我有一个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和其他错误?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

无论如何,无论如何,你需要定义你的/ *(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>

希望有所帮助。