早上好,我试着制作一个jsp页面,从文本中读取格式为mm:ss的字符串值;之后,它必须在time类型中转换此字符串,因为此值必须保存在time类型的postgres列中;现在代码如下:
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.util.Date"%>
<%@page import="java.util.*"%>
<%@page import="java.text.*"%>
<form name="form1" method="post" action="prova.jsp">
<input name="tempo" type="text" />
<br/>
<input type="submit" value="Inserisci">
</form>
String tempoperc=request.getParameter("tempo");
Date data = null;
DateFormat df = new SimpleDateFormat("mm:ss");
data = df.parse(tempoperc);
执行jsp页面时出现以下错误:
An exception occurred processing JSP page /prova.jsp at line that contain
"data = df.parse(tempoperc);"
出了什么问题?
答案 0 :(得分:1)
根据异常追踪:
root cause java.lang.NullPointerException java.text.SimpleDateFormat.parse(Unknown Source)
根本原因是查询参数tempo
正在返回null
。
如何重现这个问题?
new SimpleDateFormat("mm:ss").parse(null);
上述代码会导致上述异常。
始终尽量避免使用Scriplet并使用JSTL或EL。对于数据库操作在 Servlet 中执行,只需将请求提交给Servlet。
在JSP中,您可以使用JSTL Formatting Tags提供一组标记来解析和格式化区域设置敏感的数字和日期。
在我的另一篇文章中阅读更多信息,以便从日期字符串和长时间(以毫秒为单位)创建一个Date对象。
在将页面提交回客户端之前,所有Scriplet代码都会转换为HTML响应。
现在第一次访问页面会发生什么?
由于未提交表单,因此参数值将为null
并导致上述异常。