GWT RequestFactory:如何从 stableId() 获取持久 id?

2023-12-21

I use Long我的实体中的 ids 不仅将它们存储在数据存储中,而且还引用其他实体。现在,我使用 RequestFactory 在客户端上 create() 对象并保留它们,但我需要一种方法来找出服务器生成的 id。

这是我发现的一种需要两次旅行的方法:

final OrganizationProxy proxy = context.create(OrganizationProxy.class);
context.persist().using(proxy).fire(new Receiver<Void>(){

    public void onSuccess(Void response)
    {
        requestFactory.find(proxy.stableId()).fire(new Receiver<OrganizationProxy>()
        {
            public void onSuccess(OrganizationProxy response)
            {
                //hey, now response has the server-generated id in it, along with any other values the server populated
            }
        });
    }
});

但好像有must是一种无需第二趟即可获取持久 id 的方法。看起来 requestFactory.find() 首先需要持久 id 才能工作。

如何在不向服务器发出第二次请求的情况下获取持久 ID?

=======更新=======

我终于想到了(在tbroyer之后;)) 我可以退回Long来自 RequestContext 中的 persist() 方法的 id。这不会从EntityProxyId,但它确实让我在单个请求中获得了新对象的持久 ID。

我将保留这个问题 - 我仍然对从 EntityProxyId 中获取持久 id 感兴趣。


您可以通过调用获取 EntityProxyId 的字符串表示形式RequestFactory.getHistoryToken() http://google-web-toolkit.googlecode.com/svn/javadoc/2.1/com/google/gwt/requestfactory/shared/RequestFactory.html#getHistoryToken%28com.google.gwt.requestfactory.shared.EntityProxyId%29。这可以转换回EntityProxyId通过致电RequestFactory.getProxyId() http://google-web-toolkit.googlecode.com/svn/javadoc/2.1/com/google/gwt/requestfactory/shared/RequestFactory.html#getProxyId%28java.lang.String%29.

用 RequestFactory 的话说,新创建的实体的 id 是“短暂的”。临时 id 仅在实例内有效RequestFactory创造了RequestContext用于创建EntityProxy。当。。。的时候RequestContext被触发并且所有方法调用都已被服务器处理,SimpleRequestProcessor将检查有效负载的临时对象,如果它们已被持久化,则生成的有效负载将使用从返回的值更新客户端的状态getId() method.

对象的同一性和平等性EntityProxyId当它从短暂状态切换到持久状态时不会改变,但其关联的历史令牌会改变:

OrganizationProxy proxy = context.create(OrganizationProxy.class);
final EntityProxyId<?> id = proxy.stable();
String ephemeralString = factory.getHistoryToken(id);
context.persist().using(proxy).fire(new Receiver<Void>() {
  public void onSuccess(Void response) {
    String persistedString = factory.getHistoryToken(id);
    assert !ephemeralString.equals(persistedString);
    assert factory.getProxyId(ephemeral) == factory.getProxyId(persistedString);

    MyRequestFactory otherFactory = GWT.create(MyRequestFactory.class);
    assert factory.getProxyId(ephemeral) != otherFactory.getProxyId(ephemeral);
    // Throws IllegalArgumentException
    otherFactory.find(otherFactory.getProxyId(ephemeral));
  }
});

在上面的演示中,一旦你有了persistedString,您可以将值存储在 cookie 或其他客户端持久性机制中,并在稍后重新创建 id 以便在调用时使用RequestFactory.find()。第二个和第三个断言展示了临时 id 的“范围”。短暂和持久形式可以与RequestFactory创建了该对象。如果临时 ID 与新创建的实例一起使用RequestFactory(如果临时 ID 被标记为书签,则会发生这种情况History令牌),你会得到一个EntityProxyId,但它实际上不能用于任何有用的目的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GWT RequestFactory:如何从 stableId() 获取持久 id? 的相关文章

  • gwt 谷歌应用引擎 HTTP 错误 404

    我在 Eclipse 中使用 google 应用程序引擎创建了一个新的 gwt 项目 但是当我运行该项目时 在浏览器中我收到以下消息 HTTP 错误 404 访问 Test html 时出现问题 原因 NOT FOUND 由码头提供动力 现
  • GWT SafeHTML、XSS 和最佳实践

    OWASP 的优秀人员强调 您必须对 HTML 文档中要放入不受信任数据的部分 正文 属性 JavaScript CSS 或 URL 使用转义语法 看OWASP XSS https www owasp org index php XSS 2
  • GWT 和 Guava 的问题

    我很难让 GWT 与 Guava 一起工作 我添加了guava r09 gwt jar到我的类路径 并且
  • GWT:将自定义小部件添加到单元格丢失自定义小部件的事件

    我们的要求是使用以下命令制作一个可编辑的网格CellTable在其单元格中包含自定义小部件 自定义小部件具有文本框和与文本框关联的搜索按钮 要将自定义小部件添加为单元格 请创建以下子类AbstractEditableCell类 由 GWT
  • 根据外形尺寸更改入口点类别

    如果用户从移动 Web 浏览器或桌面 Web 浏览器访问 我希望在我的 GWT 应用程序中加载不同的用户界面 我想知道如何编辑我的 Application gwt xml 文件 更改根据外形规格加载哪个入口点类 我认为这可能是这样的 但我只
  • Jackson:无法反序列化 START_OBJECT 令牌中的 Number 实例

    我的 GWT 服务返回LinkedList
  • 从多个 UiBinder 引用单个 ClientBundle 类会产生任何费用吗?

    我有一个 ClientBundle 其中包含整个应用程序所需的 css 资源 默认背景颜色 常见布局模式等 一位表示设计目标 http code google com webtoolkit doc latest DevGuideClient
  • GWT 是否重用 Google Closure Compiler,如果不重用,为什么?

    谷歌网络工具包 GWT http code google com webtoolkit 执行 javascript 代码的内联 缩小和删除未使用的代码 以及其他一些优化 这些也是由谷歌闭包编译器 http code google com c
  • 大型应用的回流/布局性能

    我正在使用 GWT 构建一个 HTML 应用程序 其性能总体上是正确的 有时 它会加载 DOM 中的许多对象 并且应用程序会变得很慢 我使用 Chrome 开发者工具分析器来查看时间花在哪里 在 Chrome 下 一旦应用程序被编译 即没有
  • GWT 2.3 开发模式 - 托管模式 JSP 编译似乎不使用 java 1.5 兼容性

    无法编译 JSP 类 生成的 servlet 错误 DefaultMessage 上次更新 0 日期 中 0 时间 HH mm ss z 语法 错误 注释仅在源级别为 1 5 时可用 在尝试以开发模式在 Web 浏览器中打开我的 gwt 模
  • GWT 主题/模板 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 GWT 开发一个应用程序 尽管 GWT 是基于 JAVA 的媒介 但外观和感觉只能通过 CS
  • GWT/JAVA 未捕获的异常转义

    我的代码有问题 但似乎无法修复它 我想在提交按钮时将一些客户数据添加到 java GWT 中的数组列表中 我从中添加数据的表单 ok addClickHandler new ClickHandler public void onClick
  • 如何将 GWT 与 Visual Studio 一起使用来创建 ASP.NET 网站?

    如何将 GWT 与 Visual Studio 一起使用来创建 ASP NET 网站 如果可能 GWT 可以与任何后端一起使用 只需做一些工作 它开箱即用 使用 servlet 容器 但您不需要保留此容器 容器中的关键项是加载GWT编译代码
  • 在 Java/GWT 中解析用户时间输入

    解析用户在 GWT 中的文本字段中键入的时间的最佳方法是什么 默认时间格式要求用户完全按照区域设置指定的时间格式输入时间 我想要更加灵活 因为用户可以通过多种不同的方式输入时间 例如 8 8p 8pm 8 15pm 13 15 1315 1
  • 禁用任何类型的浏览器窗口滚动?

    有没有办法禁用滚动 不仅仅是滚动条 还有浏览器窗口的全部功能 根据您对 Keit 的回答 您不想在打开灯箱时滚动处于活动状态 如果是这种情况 您可以使用以下 css 在打开灯箱的同时向正文添加一个类 这个解决方案的好处是它保留了滚动 空间
  • GWT CellTable getRowElement 抛出 IndexOutOfBoundsException

    我在 GWT 中使用 CellTable 并尝试在发生某些事件时向行添加样式 添加样式的代码如下 Range range playlistTable getVisibleRange int start range getStart for
  • GWT 多个 html 页面和导航

    您好 首先我想提一下 我知道基于 ajax 的应用程序和同一页面的重用 这里的要求是 我想要两个单独的页面 一个用于登录 另一个用于主应用程序 现在 这并不是因为我只是想要它 而是因为我在两个页面中有非常不同的布局 我很乐意将其与 html
  • 使用 GIN 注入 Class

    有没有办法注入类类型Class
  • CellTables 和 css (GWT)

    有人可以帮我设置 CellTable 行的背景吗 拜托 我整晚都在努力做这件事 但一直失败 这是 让我发疯 我尝试过调用setRowStyles 但是那个 似乎不起作用 我读到你无法更改 设置样式后 CellTable 的样式 作为默认样式
  • 如何将小部件放入 CellTable 单元格中?

    我正在使用 CellTable 来显示我的记录 但现在我想在用户单击单元格时显示一个选择框 另一件事是选择框是我自己的小部件 而不是预定义的 您能给我建议任何方法吗 GWT google group 上有一篇文章讨论了答案 https gr

随机推荐

  • 想要有效地克服 Boost.Interprocess 共享内存中映射中关键类型之间的不匹配

    我正在使用 Boost Interprocess 在共享内存中创建一个映射 在本示例中从字符串到字符串 编译器似乎想强迫我在从映射检索期间在 托管段只是为了 不必要地 包含查询项 我希望能够 通过将映射的键与非共享内存中已有的实例进行匹配
  • 奥里利亚的全球职能

    我试图弄清楚如何在 Aurelia 中存储类似 全局 的函数 我已经按照这个教程 http blog durandal io 2015 04 24 aurelia custom elements and content selectors
  • 使用 Typescript 从 switch case 返回进行类型推断

    函数的类型 type fn01 name string gt void type fn02 age string gt void type fn03 description number gt void 我有这样一个案例 type Opti
  • 检测二维图中的倾角

    我需要自动检测二维图中的倾角 如下图中用红色圆圈标记的区域 我只对 主要 倾角感兴趣 这意味着倾角必须在 x 轴上跨越最小长度 倾角的数量是未知的 即不同的地块将包含不同数量的倾角 有任何想法吗 Update 根据要求 这里是示例数据 以及
  • 通过单元测试访问 Symfony 2 容器?

    如何在单元测试中访问 Symfony 2 容器 我的图书馆需要它 所以它是必不可少的 测试类扩展 PHPUnit Framework TestCase所以没有容器 Symfony 现已内置支持 看http symfony com doc m
  • Web应用程序访问用户的文件系统

    我正在为我的客户创建一个网络应用程序 该应用程序将安装在公司网络内的专用服务器上 他想在网页上查看他的本地文件列表 来自他的本地 PC 他的意思是任何访问者都可以从某个文件夹中看到他的本地文件列表 I knowWeb 应用程序无法访问访问者
  • React-select:如何在选项中显示 HTML

    我想知道react select是否可以在渲染选项中显示html 例如 如果获取的 ajax 选项有 b text b 我希望在下拉菜单中看到粗体文本 而不是看到 b text b 我阅读了文档 但没有找到任何选项 谢谢 我实现了上述解决方
  • 什么是 DOM 元素?

    以下语句中 DOM 元素的含义是什么 声明 1 https stackoverflow com questions 1065435 can a css class inherit one or more other classes 1065
  • 如何使用 W3C EBNF-Notation 并生成解析器生成器?

    在整个 RDF 规范中 EBNF NOTATION XML 规范用于指定文档的语法 所以我想知道如何使用 Antlr bison yacc 也许这些工具中的一些标志我不知道如何搜索 或者我还不知道的其他工具 来使用这些规范并生成解析器供我在
  • 如何记录 QApplication 未捕获的异常?

    我应该在哪里使用 except 块来记录异常QApplication 这似乎不起作用 app QtGui QApplication sys argv MainWindow MainWindow MainWindow show try eve
  • 查看文件路径是否在目录内

    如何检查不一定存在的文件的路径是否指向特定目录内的位置 说我有一个方法 bool IsInside string path string folder 然后 如果我这样称呼它 IsInside C Users Dude Hi C Users
  • VIsual Studio 2010,轻松最大化/最小化编辑器?

    有没有一种简单的方法可以最大化and最小化 恢复 Visual Studio 中的编辑器 为了演示 我正在寻找 Eclipse 具有的功能 正常布局 点击一个组合键 你就会得到这个 这看起来有点像 VS2010 中的 Windows gt
  • Python Plotly - 多个下拉图,每个下拉图都有子图

    Problem 我正在尝试结合两个 Python Plotly 功能 其中之一是下拉菜单 用户可以在其中切换绘图 链接到示例 https plot ly python dropdowns 另一个特点是次要情节 我的尝试 我有使用下拉菜单的工
  • 为 log4net 设置动态连接字符串

    我正在使用 log4net 并且我想在 log4net 配置中引用一个连接字符串 因为 Config connectionStrings config 中的连接字符串将是来自用户的动态输入 这是我正在尝试做的事情
  • 如何在不打开 Whatsapp 应用程序的情况下向 Whatsapp 发送消息到指定号码

    我想将消息发送到 Whatsapp 指定号码 而无需单击按钮打开 Whatsapp 应用程序 提前致谢 None
  • mysql加载数据本地infile

    我正在尝试使用下面的代码使用 LOAD DATA LOCAL INFILE 将数据加载到 mysql 表中 Mysql LOAD DATA INFILE var www vhosts domain com httpdocs test1 cs
  • 有人可以帮我编译 PHP runkit DLL 扩展吗?

    我放弃 我问过这个问题 https stackoverflow com questions 4667333 where can i get runkit dll extensions for php 5 3前一段时间 但我又陷入了这个问题
  • JavaCard 中的类字节到底是什么?

    我已经开始使用 JavaCards 并试图掌握 CLA 字节的含义 如果要读RFC 5 4 1 类字节 http www cardwerk com smartcards smartcard standard ISO7816 4 5 basi
  • Android studio - 部署发布 apk 而不是调试

    Android Studio 中的运行配置仅允许您部署默认 调试 APK 但我已经通过从 Android Studio 中运行 gradle assembleDebug 作为外部工具 构建了一个发布 APK 并且希望改为部署它 但似乎您无法
  • GWT RequestFactory:如何从 stableId() 获取持久 id?

    I use Long我的实体中的 ids 不仅将它们存储在数据存储中 而且还引用其他实体 现在 我使用 RequestFactory 在客户端上 create 对象并保留它们 但我需要一种方法来找出服务器生成的 id 这是我发现的一种需要两