0

我在 Tomcat7 和 Flex 中使用 BlazeDS。我正在尝试在客户端和服务器之间使用自定义类。作为:

package
{
   [Bindable]
   [RemoteClass(alias="remoting.Product")]
   public class Product 
   {
      public var name:String;
      public var id:int;
      public var isVisible:Boolean;
   }
}

在 Java 中:

package remoting;
public class Product {

    public String name;
    public int id;
    public Boolean isVisible;

    public Product(){
            name = "Product 0.1";
            id = 123;
            isVisible = false;
    }
    public void setName(String _name){
            name = _name;
    }
    public void setId(int _id){
            id = _id;
    }
    public void setVisible(Boolean _isVisible){
            isVisible = _isVisible;
    }
}

服务部分:

public Product echo() {
        Product product = new Product();
        product.setId(123);
        product.setName("My Product");
        product.setVisible(true);
        return product;
}

我可以成功设置 RemoteObject 的目标并调用 echo() 方法。触发结果事件,其中 Product 对象位于 event.result 中。但是,它不包含任何有意义的数据。来自 AS 类的变量只是用 null、0 和 true 值初始化。我想知道有什么问题。我尝试从 Product 返回一个带有参数的字符串,它工作正常,所以它们设置得很好。问题在于映射。

我可以采用另一种方式并实现 Externalizable,但我不理解示例中的这一部分:

 name = (String)in.readObject();
 properties = (Map)in.readObject();
 price = in.readFloat();

如果有多个字符串怎么办?

干杯。

4

2 回答 2

1

在 java 类中:使用私有字段并实现 getter。

package remoting;
public class Product {

    private String name;
    private int id;
    private Boolean isVisible;

    public Product() {
            name = "Product 0.1";
            id = 123;
            isVisible = false;
    }
    public void setName(String _name){
            name = _name;
    }
    public String getName(){
            return name;
    }
    public void setId(int _id){
            id = _id;
    }
    public int getId(){
            return id;
    }
    public void setIsVisible(Boolean _isVisible){
            isVisible = _isVisible;
    }
    public Boolean getIsVisible() {
            return isVisible;
    }
}
于 2013-10-08T08:51:00.057 回答
0

您也可以从 BlazeDS 切换到 GraniteDS:后者具有强大的透明外部化机制以及可以真正节省您时间的代码生成工具(请参阅此处的文档)。

于 2013-10-08T09:12:26.247 回答