使用BlazeDS实现java与flex传对象时,RemoteClass中包含自己写的类,后台无法转换的问题
2011-11-04 11:09
976 查看
环境:BlazeDS 3.0.0.544
/content/3241250.html
BlazeDS很好的帮助我们实现java对象和Flex对象的相互转化,减少了我们的硬编程量,很方便。
但是最近遇到一个问题,描述如下:
java 中有两个类,其中一个类中有一个变量是另一个类的类型,如下:
Java代码
public class MyClass {// 假设此类在com.test.a中
private InnerMyClass inclass;
private String name;
// ... getters and setters
}
public class InnerMyClass {// 假设此类在com.test.b中
private String aValue;
// ... getters and setters
}
这样,如果想通过BlazeDS实现Flex和java的对象传递,必须在Flex中同样写两个类:
Java代码
// 假设两个类不在一个包中
package a.vo{
[Bindable]
[RemoteClass(alias="com.test.a.MyClass")]
public class MyClass {
private InnerMyClass inclass;
private String name;
// ... getters and setters
}
// ...
}
package b.vo{
[Bindable]
[RemoteClass(alias="com.test.b.InnerMyClass")]
public class InnerMyClass {
private String aValue;
// ... getters and setters
}
// ...
}
但是,这样写编译器就会报错了,很简单,原因是MyClass没有引入InnerMyClass,为了不报错,我们通常情况下会这么做:
修改MyClass为:
Java代码
package a.vo{
[Bindable]
[RemoteClass(alias="com.test.a.MyClass")]
import b.vo.InnerMyClass;// 加了这句话
public class MyClass {
private InnerMyClass inclass;
private String name;
// ... getters and setters
}
// ...
}
这样我们就向后台传值,但是后台取到的是什么对象呢?
是不是MyClass呢?
-- 很遗憾的告诉大家,不是。
那是什么呢?
-- HashMap。
为什么会是这样呢?
-- 这个请参阅BlazeDS的官方文档。
我们应该怎么做才能让后台取到的是一个MyClass对象呢?
-- 像下面似的把MyClass改为:
Java代码
package a.vo{
[Bindable]
[RemoteClass(alias="com.test.a.MyClass")]
// import b.vo.InnerMyClass;// 去掉这句话
public class MyClass {
private b.vo.InnerMyClass inclass; // 在此处加上对InnerMyClass 的引用
private String name;
// ... getters and setters
}
// ...
}
这样java端就能取到MyClass的对象了。
至于为什么加上import就取不到MyClass对象,这个我还没研究出来,期待大家探讨。
/content/3241250.html
BlazeDS很好的帮助我们实现java对象和Flex对象的相互转化,减少了我们的硬编程量,很方便。
但是最近遇到一个问题,描述如下:
java 中有两个类,其中一个类中有一个变量是另一个类的类型,如下:
Java代码
public class MyClass {// 假设此类在com.test.a中
private InnerMyClass inclass;
private String name;
// ... getters and setters
}
public class InnerMyClass {// 假设此类在com.test.b中
private String aValue;
// ... getters and setters
}
这样,如果想通过BlazeDS实现Flex和java的对象传递,必须在Flex中同样写两个类:
Java代码
// 假设两个类不在一个包中
package a.vo{
[Bindable]
[RemoteClass(alias="com.test.a.MyClass")]
public class MyClass {
private InnerMyClass inclass;
private String name;
// ... getters and setters
}
// ...
}
package b.vo{
[Bindable]
[RemoteClass(alias="com.test.b.InnerMyClass")]
public class InnerMyClass {
private String aValue;
// ... getters and setters
}
// ...
}
但是,这样写编译器就会报错了,很简单,原因是MyClass没有引入InnerMyClass,为了不报错,我们通常情况下会这么做:
修改MyClass为:
Java代码
package a.vo{
[Bindable]
[RemoteClass(alias="com.test.a.MyClass")]
import b.vo.InnerMyClass;// 加了这句话
public class MyClass {
private InnerMyClass inclass;
private String name;
// ... getters and setters
}
// ...
}
这样我们就向后台传值,但是后台取到的是什么对象呢?
是不是MyClass呢?
-- 很遗憾的告诉大家,不是。
那是什么呢?
-- HashMap。
为什么会是这样呢?
-- 这个请参阅BlazeDS的官方文档。
我们应该怎么做才能让后台取到的是一个MyClass对象呢?
-- 像下面似的把MyClass改为:
Java代码
package a.vo{
[Bindable]
[RemoteClass(alias="com.test.a.MyClass")]
// import b.vo.InnerMyClass;// 去掉这句话
public class MyClass {
private b.vo.InnerMyClass inclass; // 在此处加上对InnerMyClass 的引用
private String name;
// ... getters and setters
}
// ...
}
这样java端就能取到MyClass的对象了。
至于为什么加上import就取不到MyClass对象,这个我还没研究出来,期待大家探讨。
相关文章推荐
- 使用BlazeDS实现java与flex传对象时,RemoteClass中包含自己写的类,后台无法转换的问题
- Flex使用Blazeds与Java交互及自定义对象转换详解
- Spring 整合 Flex (BlazeDS)无法从as对象 到 Java对象转换的异常:org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.util.Date' to required type 'java.sql.Timestamp' for property 'wfsj'; nested exception is java.lang.Ill
- Flex使用Blazeds与Java交互及自定义对象转换详解-DATAGRID读取ORACLE数据
- Flex使用Blazeds与Java交互及自定义对象转换详解(转)
- Spring 整合 Flex (BlazeDS)无法从as对象 到 Java对象转换的异常:org.springframework.beans.ConversionNotSupportedExcept
- 杜鹏的个人博客 Flex使用Blazeds与Java交互及自定义对象转换详解
- Flex使用BlazeDs与Java交互及自定义对象转换
- Flex使用Blazeds与Java交互及自定义对象转换详解
- 使用BlazeDS实现Java和Flex通信。
- SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(上)
- 解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ...
- Flex通过Blazeds利用Remoteservice与后台java消息推送
- 使用XStream是实现XML与Java对象的转换(1)--简介及入门示例
- java使用axios.js的post请求后台时无法接收到参数的问题
- 使用BlazeDS实现Java和Flex通信。
- 使用JAXB实现JAVA对象和XML字符串的互相转换
- 关于Flex使用Blazeds连接Java后台的一个注意笔记
- Flex+BlazeDS+Java项目只能使用localhost访问的问题
- 使用XStream注解实现Java对象与XML互相转换的代码示例