Java后台调用Flex自定义类型 (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開發的朋友有所幫助
!!!!
轉載于:https://www.cnblogs.com/blog-li/archive/2012/03/11/Java-AS.html
總結
以上是生活随笔為你收集整理的Java后台调用Flex自定义类型 (Java和AS类型转换问题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今天痛下决心,把开发人员的外网给断了,不
- 下一篇: 有简易通用权限管理后台的快速C# ASP