将日期从表单转换为sql.date格式时出错

时间:2014-08-07 20:00:39

标签: java sql forms jsp date

SimpleDateFormat df = new SimpleDateFormat("yyyy'-'MM'-'dd");
String sbd=request.getParameter("begindate");
java.util.Date bd2=df.parse(sbd);
java.sql.Date bd = new java.sql.Date(bd2.getTime());

我正在尝试将数据从表单发送到JSP页面并将其插入SQL数据库,但我遇到了日期格式问题。 yyyy-MM-dd是我日期的默认格式,但在执行代码时,我仍然在以下行中出现异常:

java.util.Date bd2=df.parse(sbd);

我看过类似的问题并尝试改变一些事情,但我似乎无法找到真正的问题。

编辑:这是堆栈跟踪

堆栈跟踪:     org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)     javax.servlet.http.HttpServlet.service(HttpServlet.java:728)     org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

更新

删除撇号时,异常仍然存在,但异常消息更改:

org.apache.jasper.JasperException:java.lang.NullPointerException     org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)     javax.servlet.http.HttpServlet.service(HttpServlet.java:728)     org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

2 个答案:

答案 0 :(得分:0)

尝试将初始化df的格式更改为" yyyy-MM-dd"没有连字符围绕连字符。

答案 1 :(得分:0)

在JSP中,您应该使用JSTL fmt tag library提供一组标记来解析和格式化区域设置敏感的数字和日期,并尝试避免使用Scriplet。

了解更多Oracle Tutorial - Internationalization Tag LibraryJSP Standard Tag Library

示例代码:

<%@ taglib prefix="c"   uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<c:set value="2014-10-23" var="dateString" />

<fmt:parseDate value="${dateString}" var="dateObject" pattern="yyyy-MM-dd" />

<fmt:formatDate value="${dateObject}" pattern="dd/MM/yyyy" />

注意:格式完全取决于数据字符串。


您可以使用${param.begindate}在jsp中使用begindate隐式对象从请求参数中获取param

示例代码:

<fmt:parseDate value="${param.begindate}" var="dateObject" pattern="yyyy-MM-dd"/>

要避免NullPointerException,您应该先检查一下。

<c:if test="${not empty param.begindate}">
      ...
</c:if>