我这段时间已经有很长一段时间了,而且我已经耗尽了研究资源。
在我的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 :(得分:2)
对于大多数情况,您需要java.util.Date
而不是java.sql.Date
来自java.sql.Date
抛出: 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);
}
}