如何在客户端到达 OnFailure() 之前处理 RPC 失败错误?在 GWT
Posted
技术标签:
【中文标题】如何在客户端到达 OnFailure() 之前处理 RPC 失败错误?在 GWT【英文标题】:How to Handle RPC Failure error before reach to OnFailure() at client side ? in GWT 【发布时间】:2015-02-12 18:51:47 【问题描述】:在 GWT 中,当 RPC 由于任何原因失败时,onfailure() 方法在客户端执行。
当调用 onFailure() 时,实际错误在浏览器的网络响应中可见。
那么,我的问题很简单,如何通过一些用户友好的错误来隐藏/修改这个实际错误?
【问题讨论】:
【参考方案1】:您可以覆盖 onFailure() 方法来显示您需要的内容,但您不能修改浏览器在“网络”选项卡中显示的内容。
这是我的代码中的一个示例(LoginException 和 VersionException 是我的 RPC 调用在必要时抛出的异常):
@Override
public void onFailure(Throwable caught)
if (caught instanceof LoginException)
// Redirect a user to login page
Window.Location.assign("/");
else if (caught instanceof IncompatibleRemoteServiceException ||
caught instanceof VersionException)
/*
* Here I tell a user that a new version is available,
* so a user needs to refresh the page
*/
else
// Here I show a simple message about a connection error
【讨论】:
是的,我们可以在 OnFailure() 方法中做任何事情,但它会在浏览器的网络上显示实际错误。我的目标是隐藏此错误或使用一些用户友好的错误(例如“内部服务器错误”)修改此错误。 正如我所说,不可能修改来自客户端的服务器响应 - 幸运的是。作为用户,如果我使用浏览器的开发工具,我希望看到真实的服务器响应。顺便说一句,如果设置了正确的状态代码,大多数服务器都会以“内部服务器错误”之类的内容进行响应。我不确定问题出在哪里。以上是关于如何在客户端到达 OnFailure() 之前处理 RPC 失败错误?在 GWT的主要内容,如果未能解决你的问题,请参考以下文章
如何捕获 Worklight defaultOptions:onFailure 事件?
如何使用 Ajax.BeginForm OnSuccess 和 OnFailure 方法?