如何在对象JSP SERVLET中设置DATE

时间:2012-04-25 09:18:04

标签: jsp date servlets illegalargumentexception

我这段时间已经有很长一段时间了,而且我已经耗尽了研究资源。

在我的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,但它仍然无法正常工作。

对于那些会发表评论的人,非常感谢!如果您需要更多详细信息,请发布。

2 个答案:

答案 0 :(得分:2)

对于大多数情况,您需要java.util.Date而不是java.sql.Date

来自java.sql.Date

documentation
  

抛出:       IllegalArgumentException - 如果给定的日期不是JDBC日期转义格式(yyyy-mm-dd)

这意味着来自jsp的日期不是yyyy-mm-dd格式的形式。

如果您要使用java.sql.Date对象,请在使用yyyy-mm-dd API之前将传入日期格式化为valueOf格式。

要进行转换,您可以使用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();
    }
}

答案 1 :(得分: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);
    }
}