问题标签 [autobean]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - AutoBean、数组/列表属性和 JSNI
我在 Autobeans 的上下文中以某种方式与数组和 JSNI 作斗争。
在我的一个 GWT 项目中,我使用 JSON 从后端检索数据。
在客户端上检索到数据后,我想使用自定义可视化小部件(用 javascript 开发)对其进行可视化。
以下是组件:
JSON结构:
基本上我的 json 有效负载中有两个数据集。ids是一个 ints ( int[]
) 数组,data是一个 float 数组 ( float[][]
)
当然有不同的方法来解析客户端上的数据。我决定使用 AutoBeans。所以我为我的 json 结构定义了一个接口。
自动豆:
解析数据工作正常。
我的自定义可视化小部件有一个 API 函数来设置如下所示的数据:
问题是使用 JSNI 我不能使用普通的 Java 数组。我必须使用JsArray
.
所以我必须将我的 AutoBean 属性(data和ids)转换为 JsArray 实例。有没有更好/更好的方法来做到这一点?
或者也许我应该使用JSONParser
而不是AutoBeans
更有效?
gwt - 无法将新条目插入反序列化的 AutoBean 映射
当我尝试向反序列化的 Map 实例插入新条目时,我没有得到任何异常,但 Map 没有被修改。这个入口点代码探测它。我做错了什么?
}
gwt - 使用带有 JsonRpc 方言的 ValueProxy 参数时,RF 'Unfrozen bean with null RequestContext'
当我尝试发送使用 ValueProxy 参数的请求时,我得到了这个“Unforzen bean”异常。我不知道这个异常是否是因为使用 JsonDialect 的 RF 存在错误,或者我做错了什么...... ¿ 一些帮助?
java - 使用 AutoBeans 以接口作为参数的 GWT RPC 调用
我尝试将 AutoBeans 添加到我们的 GWT 应用程序中,以将我们的对象序列化为 cookie,然后将它们读回。
但是,在此之后我无法使用反序列化对象调用 GWT RPC 方法调用。谁能提供有关 RPC 调用失败原因的任何见解?
示范:
然后运行:
...这似乎按预期工作:
但是现在我的 RPC 方法失败了,并且caught.getMessage()
是null
.
服务定义:
调用者:
此外,我在服务器日志中看不到任何请求。
任何人都可以帮忙吗?非常感谢
json - 如何序列化 AutoBean (GWT) 中的列表?
我试图弄清楚如何在 GWT 中使用 AutoBean 序列化列表,但我不断收到空指针异常。
这是我所拥有的:
谁能帮我指出正确的方向?非常感谢你。
这是支持的类和接口:
这是NPE:
gwt - AutoBeanCodex.encode 省略了具有默认值的属性
我正在通过AutoBean
转换为 JSON 的 s 与 Web 服务通信。问题在于,Web 服务期望 JSON 对象的每个属性都存在于请求中,而AutoBeanCodex.encode()
似乎忽略了所有具有默认值的属性(尽管这些属性是显式设置的)。
有没有办法也包含这些属性?
编辑:托马斯的回答已经帮了很多忙,但它仍然留下了一个小问题。即一个空数组(List<Integer>
在我的情况下)也被吞下,显然是因为默认值是空数组而不是null
。
java - 任意精度数字和 Javascript,Google Web Toolkit
这不是一个真正的问题,因为我确实解决了这个问题,但我想我会让每个人都知道,因为它可能会对人们使用 Google Web Toolkit 的方式产生相当广泛的影响。
所以问题之一是谷歌 gson在 JSON 中表示数字的方式。例如,int myInt = 2
将成为"myInt":2
,long myLong = 5432198765L
将成为"myLong":5432198765
,BigInteger myBI = 1310381093810938109481049128409487109378109248104098130981039810983
将成为"myBI":1310381093810938109481049128409487109378109248104098130981039810983
。虽然 gson 本身可以毫无问题地反序列化它,但 JSON 格式的 GWT 2.4 中的 AutoBeans 框架不会喜欢它。问题 6331修复了即将发布的 GWT 2.5 版本中的长表示。但是,由于 Javascript 数字精度的工作方式,问题 7555将无法解决。
因此,我们需要将 BigIntegers 表示为字符串,它会起作用,例如,String myBIStr = new BigInteger("1310381093810938109481049128409487109378109248104098130981039810983").toString()
将表示为"myBIStr":"1310381093810938109481049128409487109378109248104098130981039810983"
. 在 GWT 端,这将产生一个字符串,我们将不得不用它构建一个 BigInteger。
谷歌为什么不解决 7555 这一切都说得通,但这让我想到了一个真正的悬而未决的问题:如何处理 Javascript 中的高精度数字?
一般来说,如果基于 Web 的 Javascript 和 Google Web Toolkit 前端要挑战原生前端,那么可能会出现我们使用任意精度数字的情况,而不是受限于评论 3的大约 53 位精度谈到。更糟糕的是,这个限制不会影响 node.js 或任何其他服务器端 Javascript 吗?
有没有很好的解决方法,尤其是使用 Google Web Toolkit 或与 Google Web Toolkit 无缝协作的解决方法?
java - GWT Autobean Codex 读取地图
我有一个 JSON 映射,例如:
带有键和值字符串。我尝试用 autobean 阅读它,但我得到了奇怪的例外。它应该是直截了当的,不是吗?
我得到的错误是:
我是这样读地图的:
工厂定义为:
那有什么问题?
java - RequestFactory 请求 (AutoBeanCodexImpl.doCoderFor) 永远不会完成并使用 100% cpu
我们在 tomcat 上部署了一个 GWT 应用程序,使用几个小时后(2 个 QA 执行一般测试),java 进程开始使用所有 CPU 并且应用程序变慢。
我查看了 tomcat 管理器,发现有许多长时间运行的 HTTP 请求,它们都指向“/gwtRequest”,这是我们的 RequestFactory servlet。
之后我进行了线程转储,发现转储中的所有 RUNNABLE http 线程都指向“AutoBeanCodexImpl.doCoderFor()”
有人可以指出我应该看的地方吗?谢谢