AS3 Date 未使用 BlazeDS 序列化为 Java Date

发布于 2024-08-06 01:19:30 字数 1190 浏览 8 评论 0原文

当我使用 BlazeDS 传递包含日期变量的 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;

 }
}

When I pass a Actionscript Value Object that contains a Date variable using BlazeDS it is not getting transferring as a java.util.Date object correctly. When the setBaseDatefunction gets called on the Java side the baseDate value is NULL. The weird thing is if I rename the variable on the Java side to private Date date; and create a public void setDate( Date date) function it works. The problem is I need to pass 2 different dates so I can't uses this work around.

Does anyone know what I'm doing wrong?

Here are my 2 classes:

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;

 }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

紧拥背影 2024-08-13 01:19:30

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

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

Sending several Date objects in the same class should not be a problem.

Are you sure you don't have a small error somewhere in the getter or the setter? Do you have both a getter and a setter for the property?

滥情哥ㄟ 2024-08-13 01:19:30

您可以尝试:

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

You could try:

  • Setting the logging level to debug in services-config.xml to gather more information. Described here.
  • Try custom serialization using IExternalizable. Good post here.
  • Adding TraceTarget to the application.mxml to get more debug info. Info.
  • Since the package names don't match, did you register the class alias or reference the object in the application.mxml? Here.
追星践月 2024-08-13 01:19:30

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

The problem was the static string in the java object. I guess the classes need to match exactly for the serialization to automatically work. So just removing the static name fixes the issue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文