【问题标题】:Best practice to handle nullable Integer in a Java - Flex remoting application?在 Java - Flex 远程处理应用程序中处理可为空的整数的最佳实践?
【发布时间】:2011-02-10 10:22:11
【问题描述】:

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

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

在 Java 网站上很容易:

class A {
  private Integer bFk;
  getter/setter
}

但在 flex 客户端,bFk 是 int 类型。 Flash int 不能为空。所以 远程处理机制将Java null Integer 转换为0。将其发送回服务器后,Java bFk 即使在Java 端也变为0。 – 这是不可接受的,因为我需要将 0 和 null 分开。

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

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

(我知道问题:flex-null-integer,但即使是同一个问题,问题是关于另一个主题的。)

【问题讨论】:

    标签: java apache-flex blazeds amf


    【解决方案1】:

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

    看看这个错误:https://bugs.adobe.com/jira/browse/BLZ-74 - 你可以看到它被认为是一种语言限制,不会通过分配 NaN 来修复(正如一些建议的那样)。

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

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

    【讨论】:

    • 谢谢:但 NaN 不起作用,因为您不能将 NaN 分配给 Java 整数。并且修改 Blaze Source(博客链接)对我来说也没有意见。但无论如何,谢谢,它可能适用于其他 sombode。
    猜你喜欢
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 2019-11-15
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多