GWT requestfactory 验证外部服务器上的实体

Posted

技术标签:

【中文标题】GWT requestfactory 验证外部服务器上的实体【英文标题】:GWT requestfactory validate entities on external server 【发布时间】:2016-11-06 06:07:57 【问题描述】:

我正在使用 gwt 2.7.0 请求工厂。 编辑:我不使用客户端验证,只使用服务器端验证(休眠注释)

我试图编辑的实体名为“Article.java”。

在正常情况下,我会使用 ArticleEditor(从编辑器扩展)在客户端编辑文章。当文章到达服务器时,将执行验证。如果任何验证出错,客户端将收到“Set > oErrors”,我可以在 EditorFramework 中使用它来显示表单上的错误。

在我的特殊情况下,我有两台服务器:

A = One 正在使用 gwt 编辑 ValueProxy (pojos)(不持久化实体)。

B = 其他人可以访问数据库(休眠),由 A 通过无状态 EJB 访问。

我制作了一份名为“PersistentArticle.java”的文章(不包含任何休眠注释,简单的pojo)(包含所有休眠注释逻辑)。两个类具有相同的属性和方法。

文章被编辑后,它到达服务器端 A,然后我通过 ejb 消息将对象发送到服务器 B。在 B 中,我从 Article 类创建 PersistentArticle 的实例并尝试持久化。如果任何验证出错,它会生成 javax.validation.ConstraintViolationException。

问题是我不知道如何将服务器 B 生成的 ValidationException 与服务器 A 中的 requestFavtory 和 EditorFramework 绑定,所以我可以在表单中显示错误。 (在正常情况下,这是由服务器 A 中的 requestfactory 自动完成的)

回到客户端,我收到了 ValidationException

public void onFailure(ServerFailure oError) 方法来自请求的 Receiver 而不是在

方法onConstraintViolation(Set> oErrors,这是最理想的。

我有可能尝试做什么? 你有什么推荐的?

英语不是我的母语;请原谅我的任何错误。

提前谢谢。

【问题讨论】:

【参考方案1】:

RequestFactory 将在调用服务方法之前验证您的对象,并在存在违规行为时中止一切。如果您的验证不适合此方案,那么您将无法利用它。

您的验证是在服务方法中完成的,因此如果您想在客户端处理错误,则必须在返回值中发回错误。这意味着将它们转移到价值代理,然后回到客户端的约束违规。

【讨论】:

以上是关于GWT requestfactory 验证外部服务器上的实体的主要内容,如果未能解决你的问题,请参考以下文章

GWT 2.6 - RequestFactory Locator 找不到类似的域方法

RequestFactory 与服务层

GWT RequestFactory 并将服务器端更改传播到客户端

什么时候应该使用 RequestFactory 与 GWT-RPC?

如何在小工具中使用 GWT RequestFactory?

GWT/AppEngine:设计 RequestFactory 工作流以更好地处理异常