簡體   English   中英

將jcalendar Date轉換為XMLGregorianCalendar獲取Null值

[英]Convert jcalendar Date into XMLGregorianCalendar Getting Null Value

我有一些問題,我只是從jCalendar中的jDateChooser獲取null值。

此方法是將java.util.Date轉換為XMlGregorianCalendar的函數:

DatatypeFactory df;
public XMLGregorianCalendar function_ConvertAsXMLGregorianCalendar(Date date) {
    if (date == null) {
        System.out.println("Error on Function Convert Date into XML Gregorian Calendar");
        return null; 
    } else {
        GregorianCalendar gc = new GregorianCalendar();
        gc.setTimeInMillis(date.getTime());
        return df.newXMLGregorianCalendar(gc);
    }
}

這是getStart和getEnd Dates的2個函數。

private XMLGregorianCalendar getStartDate(){
    Date dateStarting  = jDateChooserStart.getDate();
    System.out.println("Date Start : " + dateStarting.toString());
    XMLGregorianCalendar cal = function_ConvertAsXMLGregorianCalendar(dateStarting);
    System.out.println("Converted Date : " + cal.toXMLFormat());
    return cal;
}

private XMLGregorianCalendar getEndDate(){
    Date dateEnding = jDateChooserEnd.getDate();
    System.out.println("Date End : " + dateEnding);
    return function_ConvertAsXMLGregorianCalendar(dateEnding);
}

然后我只是將方法放在一個名為schedule的對象中:

schedule.setStartDate(getStartDate());
schedule.setEndDate(getEndDate());

Netbeans的結果(v7.1)

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Frames.CreateSchedule.function_ConvertAsXMLGregorianCalendar(CreateSchedule.java:181)
at Frames.CreateSchedule.getStartDate(CreateSchedule.java:188)
at Frames.CreateSchedule.SubmitButtonActionPerformed(CreateSchedule.java:204)
at Frames.CreateSchedule.access$000(CreateSchedule.java:16)

怎么了?

謝謝你。

更新::

我只是將功能改為:

public XMLGregorianCalendar function_ConvertAsXMLGregorianCalendar(Date date) {
    if (date == null) {
        System.out.println("Error on Function Convert Date into XML Gregorian Calendar");
        return null; 
    } else {
        GregorianCalendar gc = new GregorianCalendar();
        gc.setTimeInMillis(date.getTime());
        DatatypeFactory df = null;
        return df.newXMLGregorianCalendar(gc);
    }
}

更新2#::

初始化newInstance()方法后,我收到另一個錯誤:

java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date

我只是更改包名稱

java.util.Date into java.SQL.Date

然后鑄造:

Date dateStarting  = (Date) jDateChooserStart.getDate();
Date dateEnding    = (Date) jDateChooserEnd.getDate();

如何解決這個問題?

再次感謝。

雖然代碼中沒有正確的行號並不明顯,但最可能的原因是NullPointerException是行:

  return df.newXMLGregorianCalendar(gc);

你的df為null。 你在哪里初始化這個領域?

看來df已聲明但未實例化:

DatatypeFactory df;

從這里:

df.newXMLGregorianCalendar(gc);
^

您可以先使用DatatypeFactory.newInstance()進行實例化,如下所示:

DatatypeFactory df = DatatypeFactory.newInstance(); 

我並不完全理解你的問題,但在我看來,這是一個簡單的修復調用你的日歷,這應該工作(我認為)。

Calendar timeStamp = new GregorianCalendar();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM