Java 将日期从表单转换为sql.date格式时出错
我试图将数据从表单发送到JSP页面,并将其插入SQL数据库,但日期格式有问题。yyyy-MM-dd是我的日期的默认格式,但在执行代码时,我仍然在以下行中遇到异常:Java 将日期从表单转换为sql.date格式时出错,java,sql,forms,jsp,date,Java,Sql,Forms,Jsp,Date,我试图将数据从表单发送到JSP页面,并将其插入SQL数据库,但日期格式有问题。yyyy-MM-dd是我的日期的默认格式,但在执行代码时,我仍然在以下行中遇到异常: SimpleDateFormat df = new SimpleDateFormat("yyyy'-'MM'-'dd"); String sbd=request.getParameter("begindate"); java.util.Date bd2=df.parse(sbd); java.sql.Date bd = new jav
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());
我研究过类似的问题,并试图改变一些事情,但我似乎找不到真正的问题所在
编辑:这是stacktrace
堆栈跟踪:
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)
javaservlet.http.HttpServlet.service(HttpServlet.java:728)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
更新:
删除撇号时,异常仍然存在,但异常消息会更改:
org.apache.jasper.jaspereException: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)
javaservlet.http.HttpServlet.service(HttpServlet.java:728)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)尝试将初始化df的格式更改为“yyyy-MM-dd”,而不在连字符周围加撇号 在JSP中,您应该使用提供了一组用于解析和格式化与区域设置相关的数字和日期的标记,并尽量避免Scriplet 多读一些 示例代码:
java.util.Date bd2=df.parse(sbd);
<%@ 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" />
要避免
NullPointerException
,您应该首先检查它
<fmt:parseDate value="${param.begindate}" var="dateObject" pattern="yyyy-MM-dd"/>
...
有什么例外?强sbd有什么格式?请粘贴StackTrace我已经这么做了(这是我第一次尝试),但结果是一样的。我再试了一次,但仍然有一个异常,但是stacktrace发生了变化(我将更新问题),在尝试将字符串解析为日期对象之前,您是否尝试打印sbd的内容?如果没有,我建议您这样做,并确保您确实从请求参数中获得了一个字符串,因为第二个stacktrace将指示sbd或df的值为null。如果sbd是您想要的格式为“yyyy-MM-dd”的格式良好的字符串,那么我将对df执行空测试。此外,如果stacktrace开头的异常字符串在第一个错误中不同(不是空异常),您是否也可以添加该异常?
<c:if test="${not empty param.begindate}">
...
</c:if>