【问题标题】:Error when converting a date from a form to sql.date format将日期从表单转换为 sql.date 格式时出错
【发布时间】:2014-08-07 20:00:39
【问题描述】:
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)

【问题讨论】:

  • 有什么例外?
  • Strong sbd有什么格式?
  • 请粘贴堆栈跟踪

标签: java sql forms jsp date


【解决方案1】:

尝试将初始化 df 的格式更改为“yyyy-MM-dd”,而连字符周围没有撇号。

【讨论】:

  • 我已经这样做了(这是我第一次尝试),但结果是一样的。我又试了一次,仍然有异常,但是堆栈跟踪发生了变化(我会更新问题)
  • 在尝试将字符串解析为 Date 对象之前,您是否尝试过打印 sbd 的内容?如果没有,我建议您这样做并确保您实际上从请求参数中得到了一个字符串,因为第二个堆栈跟踪将指示 sbd 或 df 的值为空。如果 sbd 是您想要的“yyyy-MM-dd”格式的格式良好的字符串,那么我将对 df 执行空测试。另外,如果开始堆栈跟踪的异常字符串在第一个错误中不同(不是空异常),您也可以添加它吗?
【解决方案2】:

在 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 中使用param 隐式对象从请求参数中获取begindate

示例代码:

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

为了避免NullPointerException,你应该先检查它。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-14
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 2018-10-28
    相关资源
    最近更新 更多