【问题标题】:AS3 Date not serializing to Java Date using BlazeDSAS3 日期未使用 BlazeDS 序列化为 Java 日期
【发布时间】:2009-09-30 14:19:11
【问题描述】:

当我使用 BlazeDS 传递包含 Date 变量的 Actionscript 值对象时,它没有正确地作为 java.util.Date 对象进行传输。当在 Java 端调用 setBaseDate 函数时,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();
  } 

 }
}

Java:

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;

 }
}

【问题讨论】:

    标签: java apache-flex serialization blazeds remoteobject


    【解决方案1】:

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

    您确定在 getter 或 setter 的某处没有小错误吗?您是否同时拥有该属性的 getter 和 setter?

    【讨论】:

    • 不,问题不在于值设置不正确......问题是值来自 flex 为 NULL
    • 详细说明.....假设我在 setEndDate 函数的 Java 类中放置了一个断点......当它被执行时 endDate 参数为 NULL......即使它已设置在发送之前在 flex 中
    • 您是否已经使用 http 调试器(例如,Charles)检查了日期是否在您发送时不为空?那是在服务器上接收并在 BlazeDS 中解析之前。
    • 感谢您的回复....但是是的,我的日期正在通过具有正确日期的 http 调试器..但是我检查了服务器上的对象并且 cdate = null....这导致我相信它像你所说的那样在二传手中存在,但我不知道它可能是什么
    【解决方案2】:

    你可以试试:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-13
        相关资源
        最近更新 更多