0

問題があります。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とgetEndDatesの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);
    }
}

UPDATE 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();

この問題を解決するにはどうすればよいですか?

再度、感謝します。

4

3 に答える 3

1

コードに適切な行番号がないと明らかではありませんが、最も可能性の高い原因NullPointerExceptionは次の行です。

  return df.newXMLGregorianCalendar(gc);

あなたdfがヌルであることで。このフィールドをどこで初期化しますか?

于 2012-08-26T13:58:43.743 に答える
1

df宣言されているがインスタンス化されていないようです。

DatatypeFactory df;

ここから:

df.newXMLGregorianCalendar(gc);
^

次のように、 DatatypeFactory.newInstance()を使用して最初にインスタンス化できます。

DatatypeFactory df = DatatypeFactory.newInstance(); 
于 2012-08-26T13:59:39.770 に答える
0

私はあなたの問題を正確に理解していませんが、これは簡単な修正であり、このようにカレンダーを呼び出すとうまくいくはずです(私は思います)。

Calendar timeStamp = new GregorianCalendar();
于 2012-08-26T18:42:18.280 に答える