在 Java - Flex 远程处理应用程序中处理可空整数的最佳实践?

发布于 2024-10-16 22:10:48 字数 900 浏览 4 评论 0原文

我有一个由 Java 服务器部分和 Flash/Flex 客户端组成的应用程序,两者都通过 BlazeDS 进行通信。为了在两个站点上拥有相同类型的对象,我使用 GAS3 代码生成器(由 flex-mojos 使用)。

但现在我面临着处理可为空整数的问题。问题是我有一个对象 (A),其中包含一个外键 ID,该 ID 引用了一个可选对象 B。 – 但我只将该 ID 发送到 Flex 客户端。

在 Java 站点上这很简单:

class A {
  private Integer bFk;
  getter/setter
}

但是在 Flex 客户端,bFk 是 int 类型。并且 Flash int 不能为 null。所以 remoting机制将Java null Integer转换为0。发送回服务器后,即使在Java端,Java bFk也变为0。 – 这是不可接受的,因为我需要分隔 0 和 null。

我的第一个解决方法是在 Java 端不使用 Integer,而是使用一个新的 NullAbleID 类,它的工作方式有点像包装器/适配器,它包装一个内部 int,其中 -1 代表 null(我可以使用 -1 代表 null,因为真实的 id 将为负数)。但是当我使用它时,这意味着我必须用这个 NullAbleID 类替换所有 Java Integer id。

因为我相信我不是第一个遇到此问题的人,所以我向您询问一般问题的更好解决方案:如何在 Java - Flex 远程处理场景中表示可空整数?

(我是意识到问题:flex-null-integer,但即使是同一个问题,问题是关于另一个主题。)

I have an Application consisting of a Java Server part and a Flash/Flex client, both communicate via BlazeDS. In order to have the same typed Objects on both sites, I use the GAS3 code generator (used by flex-mojos).

But now I am facing the problem of handling nullable Integers. The problem is that I have an Object (A) which contains a foreign key ID which is reference an optional Object B. – But I only send the ID to the flex client.

On the Java site it is easy:

class A {
  private Integer bFk;
  getter/setter
}

But on the flex client side, bFk is of type int. And a Flash int can not be null. So the
remoting mechanism converts the Java null Integer to 0. After sending it back to the server, the Java bFk becomes 0 even on the Java side. – That is not acceptable, because I need to separate 0 and null.

My first workround is using not a Integer on the Java side, but an new Class NullAbleID, which works a bit like a wrapper/adapter, that wrap an internal int where -1 represent null (I can use -1 for null, because real id will be negative). But when I would using this it means I have to replace all Java Integer ids, by this NullAbleID class.

Because I believe I am not the first one who has this problem, I ask you for an better solution of the general question: how to represent an nullable Integer in an Java - Flex remoting scenario?

(I am aware of question: flex-null-integer, but even if it is the same problem, the question is about another subject.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

够钟 2024-10-23 22:10:48

一种想法是使用标志值。类似于 -1 或 NaN。

查看此错误:https://bugs.adobe.com/jira/browse/ BLZ-74 - 如您所见,它被视为一种语言限制,并且不会通过分配 NaN 来修复(正如一些人建议的那样)。

如果您想自己使用 NaN 方法,请查看 Farata 博客 http://flexblog.faratasystems.com/2010/01/07/how-to-keep-numeric-null-value-from-turning-into-零在闪耀。他们正在谈论 AS->Java 转换,但是查看评论,您会发现 Java->AS 的解决方案

我会避免使用包装类修改所有整数,我不喜欢这种方法 - 但是这也是一个解决方案。

One idea is to use a flag value. Something like -1, or NaN.

Take a look on this bug: https://bugs.adobe.com/jira/browse/BLZ-74 - as you can see it is considered as a language limitation and is not going to be fixed by assigning NaN (as some suggested).

If you want to go with the NaN approach by yourself check Farata blog from http://flexblog.faratasystems.com/2010/01/07/how-to-keep-numeric-null-value-from-turning-into-zeros-in-blazeds. They are talking about AS->Java conversion, but looking on the comments you will find a solution for Java->AS

I would stay away from modifying all the Integers with a wrapper class, I don't like the approach - but it is a solution too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文