2012-04-25 21 views
0

我這段時間已經有相當一段時間了,而且我已經用盡了研究資源。如何在對象中設置DATE,JSP SERVLET

在我的servlet,我有這樣的代碼:

comment.setDateadded(Date.valueOf(request.getParameter("date"))); 

的代碼基本上是從一個JSP頁面,然後設置爲對象的值的一個獲取數據。

的問題是:

當servlet調用並運行返回此錯誤:

WARNING: StandardWrapperValve[add_comment]: PWC1406: Servlet.service() for servlet add_comment threw exception 
java.lang.IllegalArgumentException 
    at java.sql.Date.valueOf(Date.java:117) 
    at Controller.Leader.add_comment.processRequest(add_comment.java:50) 
    at Controller.Leader.add_comment.doPost(add_comment.java:96) 

我已經試過: 我不知道是什麼問題了。我導入了

import java.sql.Date; 

在servlet或工作線上。我也嘗試手動放置日期而不是自動放置當前日期,但它仍然無法正常工作。我試過yyyy/mm/dd格式和yyyy-mm-dd,但它仍然不能工作。

對於那些會發表意見的人,非常感謝!如果您需要更多詳細信息,請發佈。

+0

的你不應該在你的servlet類使用'java.sql.Date'一個例子。你應該只在你的DAO類中使用它。 – BalusC 2012-04-25 14:56:22

回答

2

對於大多數情況下,你需要java.util.Date而不是java.sql.Date

java.sql.Date

Throws: IllegalArgumentException - if the date given is not in the JDBC date escape format (yyyy-mm-dd)

documentation這意味着從最新的jsp未來不yyyy-mm-dd格式的形式。

如果您要使用java.sql.Date對象,請在使用valueOf API之前將傳入日期格式設置爲yyyy-mm-dd格式。

對於轉換,您可以使用SimpleDateFormat將傳入值設置爲yyyy-mm-dd

編輯:

更妙的是,而不是使用Date對象,你應該Calendar對於大部分的操作。

編輯:每評論

由於:

假設我從JSP傳入的日期爲dd-MMM-yyyy格式。

try { 
    String date = "25-Apr-2012"; 
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy"); 
    java.util.Date parsedDate = dateFormat.parse(date); 
    dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    date = dateFormat.format(parsedDate); 
    System.out.println(date); 
    java.sql.Date sqlDate = java.sql.Date.valueOf(date); 
    System.out.println(sqlDate); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
} 
+0

感謝您的評論。我製作了yyyy-mm-dd格式,但它仍然有相同的錯誤。 我會檢查你提到的日曆。非常感謝你!如果你有代碼願意共享日曆,它將非常感謝!:) – gwafito 2012-04-25 09:34:07

+0

你從jsp得到的日期是什麼,你能給出確切的值嗎? – mprabhat 2012-04-25 09:35:16

+0

其2012-04-25。謝謝@mprabhat – gwafito 2012-04-26 00:31:43

0

使用java.sql.Date

public class A 
{ 
    public static void main(String [] args) 
    { 
     java.sql.Date jsqlD = java.sql.Date.valueOf("2010-01-31");  
     System.out.println(jsqlD); 
    } 
}