AS3使用BlazeDS未将日期序列化为Java Date

时间:2009-09-30 14:19:11

标签: java flex serialization blazeds remoteobject

当我使用BlazeDS传递包含Date变量的Actionscript值对象时,它不会正确地作为java.util.Date对象进行传输。当在Java端调用setBaseDatefunction时,baseDate值为NULL。奇怪的是,如果我将Java端的变量重命名为private Date date;并创建一个public void setDate( Date date)函数,它就可以工作。问题是我需要传递2个不同的日期,所以我不能使用这个工作。

有谁知道我做错了什么?

这是我的两个班级:

AS3

package com.shua.flex.valueobjects
{

 [Bindable]
 [RemoteClass(alias='com.shua.valueObjects.myVO')]
 public class myVO
 {

  public var label:String;



  public var endDate:Date;


  public var baseDate:Date;

  public function myVO()
  {
   super();
  } 

 }
}

爪哇:

package com.shua.valueObjects;

import java.util.Date;



public class myVO{


 public static String NAME = "myVO";

 private String label;

 private Date endDate;

 private Date baseDate;


 public void setLabel(String label) {
  this.label = label;
 }

 public String getLabel() {
  return label;
 }

 public void setEndDate(Date endDate) {
  this.endDate= endDate;
 }

 public Date getEndDate() {
  return this.endDate;
 }

 public void setBaseDate( Date baseDate ){

  this.baseDate = baseDate;
 }

 public Date getBaseDate(){

  return this.baseDate;

 }
}

3 个答案:

答案 0 :(得分:0)

在同一个类中发送多个Date对象应该不是问题。

你确定在getter或setter中某处没有小错误吗?你有房产的吸气剂和安装者吗?

答案 1 :(得分:0)

你可以尝试:

  • 在services-config.xml中设置日志记录级别以调试以收集更多信息。描述here
  • 使用IExternalizable尝试自定义序列化。好帖子here
  • 将TraceTarget添加到application.mxml以获取更多调试信息。 Info
  • 由于包名称不匹配,您是否注册了类别名或引用了application.mxml中的对象? Here

答案 2 :(得分:0)

问题是java对象中的静态字符串。我想这些类需要完全匹配序列化才能自动工作。因此,只需删除静态名称即可解决问题。