【问题标题】:Accessing a java method in a flex object访问 flex 对象中的 java 方法
【发布时间】:2010-07-16 19:06:12
【问题描述】:

假设我有以下 java 类

public class Square {
        private Long id;

    private double sideLength;

    public void setSideLength(double sideLength) {
        this.sideLength = sideLength;
    }

    public double getSideLength() {
        return this.sideLength;
    }

    public double getArea() {
        return sideLength * sideLength;
    }

//another methods...

}

在 actionscript 类中,我使用 RemoteObject 调用 java 方法 SquareDAO.findById(Long id) 并得到一个具有以下内容的对象:

object.id
object.sideLength

但我不知道该区域。如何调用 getArea() 方法?

【问题讨论】:

  • 您的意图到底是什么?您想使用 Flex 中的远程对象调用 getArea 方法吗?
  • 是的,我想调用 getArea。但是我使用 SquareDAO 得到了一个正方形实例,而这个实例只有 id 和 sideLength。

标签: java apache-flex actionscript remoteobject


【解决方案1】:

当调用远程方法(来自 java、c#、php 等)时,您将只收到从被调用方法返回的对象中获取的序列化属性。如果您想从 Flex 调用 getArea 方法,您应该执行以下操作:

a)创建一个名为 Square 的 ActionScript 类,其中包含远程类元数据 [RemoteClass(alias="yourjavapackage.Square")]

b) 在你的类中添加一个 getArea 方法,做与 Java 相同的事情。

c) 调用 java 方法并注意它将返回您的 AS 类的实例。现在可以从 AS 调用 getArea 方法了

BlazeDS 的远程服务过于复杂,无法在帖子中详细解释,我强烈建议花一些时间阅读 BlazeDS 开发人员指南,至少是远程章节。

【讨论】:

  • 如果我必须在 AS 类中复制方法,每次方法更改时,我都必须记住在两个地方都进行更改。
  • 是的,这是使用两种不同的运行时/语言时的缺点之一。 Java小程序+Java服务器端的组合没有这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-06
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
相关资源
最近更新 更多