java as转换_Java后台调用Flex自定义类型 (Java和AS类型转换问题)

最近在做一个基于Red5的流媒体交互平台,实现音频,视频,文本的交互。遇到一个问题,封装的类型要能进行转换,或许第一想到的是BlazeDS实现数据的转换,这里不是实现前台代用后台,是后台处理前台的实体,好了,实际问题。

前台有个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开发的朋友有所帮助

!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值