Java后台调用Flex自定义类型 (Java和AS类型转换问题)
2012-03-11 18:03
381 查看
最近在做一个基于Red5的流媒体交互平台,实现音频,视频,文本的交互。遇到一个问题,封装的类型要能进行转换,或许第一想到的是BlazeDS实现数据的转换,这里不是实现前台代用后台,是后台处理前台的实体,好了,实际问题。
前台有个MessageDTO,Java后台有个MessageDTO,实现对消息的封装,
AS的MessagDTO,这里注意一点,属性设置成Public了,不需要设置getter/setter获取器,但是必须保证属性和Java后台相同,Java后台MessageDTO
前台操作
this.netConnection.call("sendMessage", new Responder(function(obj:Object):void{}),this.userName,obj);
在Java后台有一个sendMessage方法:
public void sendMessage(String sender,MessageDTO message){
//System.out.println(" test1 "+sender);
//System.out.println(" test1 "+accepter);
//System.out.println(" test1 "+param[0]);
//System.out.println(" test2 "+param[1]);
System.out.println("类型是否发生转换?"+sender+" "+message.getAcceptnickname());
if(message.getPrivatetalk()){
callClient(message.getAcceptnickname(),"addShowMessage",new Object[]{message,1});
}else{
if(message.getAcceptnickname().equals("所有人")){
}else{
}
}
}
参数就传过来了,注意问题,前台AS类必须声明成 如下形式
[Bindable]
前台有个MessageDTO,Java后台有个MessageDTO,实现对消息的封装,
package com.Model { [Bindable] [RemoteClass(alias="cn.stdu.webDTO.MessageDTO")] public class MessageDTO { //发言者 public var nickname:String; //发言内容 public var msg:String; //发言时间 public var time:Date; //是悄悄话 public var isprivatetalk:Boolean; //发言的对象 public var acceptnickname:String; //粗体 public var fontWeight:String = ""; //倾斜 public var fontStyle:String=""; //下划线 public var fontTextDecoration:String=""; //颜色 public var fontColor:uint; } }
AS的MessagDTO,这里注意一点,属性设置成Public了,不需要设置getter/setter获取器,但是必须保证属性和Java后台相同,Java后台MessageDTO
package cn.stdu.webDTO; import java.io.Serializable; import java.util.Date; public class MessageDTO implements Serializable{ /** * The VO from DTO */ private static final long serialVersionUID = 1L; //Message的一些信息 private String nickname; private String acceptnickname; private String msg; private boolean isprivatetalk; private Date time; private String fontColor; //Flex中Color形式 uint “00ff00ff” 需要转换 private String fontStyle; private String fontWeight; private String fontTextDecoration; public void setNickname(String nickname){ this.nickname=nickname; } public String getNickname(){ return nickname; } public void setAcceptnickname(String acceptnickname){ this.acceptnickname=acceptnickname; } public String getAcceptnickname(){ return acceptnickname; } public void setMsg(String msg){ this.msg=msg; } public String getMsg(){ return msg; } public void setDate(Date time){ this.time=time; } public Date getDate(){ return time; } public void setPrivatetalk(boolean isprivatetalk){ this.isprivatetalk=isprivatetalk; } public boolean getPrivatetalk(){ return isprivatetalk; } public void setMsgColor(String fontColor){ this.fontColor=fontColor; } public String getMsgColor(){ return fontColor; } public void setMsgIclined(String fontStyle){ this.fontStyle=fontStyle; } public String getMsgIclined(){ return fontStyle; } public void setMsgBold(String fontWeight){ this.fontWeight=fontWeight; } public String getMsgBold(){ return fontWeight; } public void setMsgUnderline(String fontTextDecoration){ this.fontTextDecoration=fontTextDecoration; } public String getMsgUnderline(){ return fontTextDecoration; } }
前台操作
this.netConnection.call("sendMessage", new Responder(function(obj:Object):void{}),this.userName,obj);
在Java后台有一个sendMessage方法:
public void sendMessage(String sender,MessageDTO message){
//System.out.println(" test1 "+sender);
//System.out.println(" test1 "+accepter);
//System.out.println(" test1 "+param[0]);
//System.out.println(" test2 "+param[1]);
System.out.println("类型是否发生转换?"+sender+" "+message.getAcceptnickname());
if(message.getPrivatetalk()){
callClient(message.getAcceptnickname(),"addShowMessage",new Object[]{message,1});
}else{
if(message.getAcceptnickname().equals("所有人")){
}else{
}
}
}
参数就传过来了,注意问题,前台AS类必须声明成 如下形式
[Bindable]
[RemoteClass(alias="cn.stdu.webDTO.MessageDTO")] 这句话指明和Java的具体类对应一直,同时不需要一定痛过Blazeds才实现这种转换,在Red5 中有AS和Red5中Java代码类型的对应,只是AS需要指明而已!! 强调一点,一定要确定AS和Java两个实体类型一致,今天因为这个原因,一直就传不过来参数,网上找了很多,都不是我遇到的,在此记录一下,希望在用AS和Red5开发的朋友有所帮助 !!!!
相关文章推荐
- 类型:Jquery;问题:jquery调用后台带参数方法;结果:利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法。
- xFire实现Java间自定义类型的WebService调用(一)
- .Net2.0调用Java的WebService Int Datetime 自定义类型 传递到WebService为空
- 关于Flex 和java之间利用Blazeds通信的类型转换问题
- xFire实现Java间自定义类型的WebService调用(二)
- xFire实现Java间自定义类型的WebService调用(一)
- java中调用oracle procedure或者function返回类型的问题
- 使用BlazeDS实现java与flex传对象时,RemoteClass中包含自己写的类,后台无法转换的问题
- 关于JS调用Java后台API跨域问题的解决方法
- PPAS上以自定义类型数组为入参的函数及调用加java调用
- 关于Boolean类型在flex与java中间传递的问题
- 使用BlazeDS实现java与flex传对象时,RemoteClass中包含自己写的类,后台无法转换的问题
- Java调用存储过程(返回:简单类型、自定义对象、列表数组)
- 关于Flex与Spring整合RemoteObject调用Java方法找不到自定义通道的解决方法
- flex中传值到java后台出现乱码问题
- 用反射调用方法(带自定义类型的参数)问题
- java调用oracle存储过程的自定义类型(可变数组).txt
- C#调用Java端Web服务(CXF)时发生Integer参数类型无法传递的问题
- java 调用ant的自定义task,默认不是build.xml 的一点问题
- 解决Java中Long类型转换成Json时,在Js代码调用时精度丢失的问题