2009-09-30 37 views
0

當我使用BlazeDS傳遞包含Date變量的Actionscript值對象時,它無法正確地作爲java.util.Date對象進行傳輸。當在Java端調用setBaseDate函數時,baseDate值爲NULL。奇怪的是,如果我將Java端的變量重命名爲private Date date;並創建public void setDate(Date date)函數。問題是我需要通過2個不同的日期,所以我不能使用這項工作。AS3使用BlazeDS無法序列化到Java的日期

有誰知道我在做什麼錯?

這裏是我的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; 

} 
} 

回答

0

問題是java對象中的靜態字符串。我猜這些類需要完全匹配序列化才能自動工作。所以只是刪除靜態名稱可以解決問題。

0

在同一個課堂上發幾個日期的對象不應該是一個問題。

你確定你沒有在getter或setter的某個地方出現小錯誤嗎?你是否有一個吸氣劑和二手物業?

+0

不是問題不是沒有設置正確的值....問題是價值來自柔性爲NULL – Shua 2009-09-30 15:35:04

+0

精心製作.....讓我說我把一個斷點在Java類在setEndDate函數...當它被執行時,endDate參數是NULL ...即使它在發送之前在flex中設置 – Shua 2009-09-30 15:39:11

+0

您是否已經使用http調試器(例如Charles)檢查日期是否爲空當你發送出去?這是在服務器上收到並在BlazeDS中解析之前。 – 2009-09-30 15:57:32

0

你可以嘗試:

  • 設置日誌記錄級別的服務-config.xml中進行調試,以收集更多的信息。描述爲here
  • 嘗試使用IExternalizable定製序列化。好帖子here
  • 將TraceTarget添加到application.mxml以獲取更多調試信息。 Info
  • 由於軟件包名稱不匹配,您是否註冊了類別別名或引用了application.mxml中的對象? Here