时间格式化 为什么空指针异常?
private String jcongtime;
//set get
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
jcongtime=sdf.format(pi.getJiagongtime());
pi是一个对象。jiagongtime是其字段 是Java.util.Date类型
我在jsp页面 是要回显日期的:
之前是这样写的:(没有用自己定义的jcongtime这个字段)
<input type="text" name="pi.jiagongtime" value="${pi.jiagongtime}"
但是这样做 选择日期后 回显的不是 2012-04-11这种格式 而是 一串英文的格式
所有我想把起转为字符串所有用了SimpleDateFormat 然后赋给我的自己定义的jcongtime这个字段
在页面:<input type="text" name="pi.jiagongtime" value="${jcongtime}"
现问题来了:
但选择了日期 即pi.getJiagongtime()!=null 一切正常 可以回显
但是当pi.getJiagongtime()==null 时报空指针异常 是jcongtime=sdf.format(pi.getJiagongtime());这行报的错误
我能确定pi对象不是空的(因为没选择日期那么选择了其他字段)所以不是pi.getJiagongtime());这个方法报的 求解释
[解决办法]
虽然pi对象不是空的,但是pi.getJiagongtime()有可能为空的啊。
要是pi.getJiagongtime()==null就好比下面的代码,当然报空指针异常了。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); sdf.format(null);
[解决办法]
看看源代码你就很清楚了,format会调用到SimpleDateFormat的方法
public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos) { pos.beginIndex = pos.endIndex = 0; return format(date, toAppendTo, pos.getFieldDelegate()); }