2012-07-30 133 views
2

我有一个GWT 2.4网络应用程序。我想按照以下方式处理HTTP错误代码:根据代码将用户发送到不同的GWT页面。 是的,我知道GWT只有一个动态页面,所以我想用这个地方。我添加了以下几行加到web.xml:我如何处理GWT的404错误?

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

我想这应该用户重定向到我的GWT应用程序,并显示符合那个地方的景色。但这根本不起作用。当我尝试访问不存在的资源时,会显示一个空白页面。

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

那么,我该如何处理404和GWT的其他错误?

+0

您应该详细说明您使用哪种机制进行通信以及何时发生服务器错误。 – 2012-07-30 13:13:53

+0

我想处理两种情况:如果用户手动输入错误的地址,则会出现404服务器错误,并且会为GWT客户端中的所有未捕获的异常进行全局错误处理。 – KutaBeach 2012-07-31 08:40:31

回答

0

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

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

+0

感谢您的回复,checketts!这正是我做这件事的方式。如果用户输入错误的地址MANUALLY,则会出现404服务器错误,并且会处理所有未捕获的异常的全局错误。 – KutaBeach 2012-07-31 08:38:44

+0

您将需要服务器端的单独处理程序。 – checketts 2012-08-01 04:21:59

+0

对于全局异常处理,您可以在服务器端执行此操作。我使用Spring WebMVC,异常处理工作得很好,因为它设置了Http状态代码,所以如果用户手动浏览其余的调用,他们会得到相同的行为,并且我的RequestBuilder的子类在客户端执行重定向。 – checketts 2012-08-01 04:24:15

0

您是否在使用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> 

希望有所帮助。