情景:在struts2項目在進行時間段查詢時,action處報瞭如下java.text.ParseException: Unparseable date: "" ,查看一下代碼沒有問題,在進行數據接收時進行判斷,但是沒有得到想要結果,有些鬱悶的,解決後在此記錄一下:
[1]之前報錯代碼: if (bgndate!=null&&bgndate!=""&&enddate!=null && enddate!="")) 就是在這裏出現,請求時間爲空時,按理不該走的,實際卻走了,那肯定是我這個判斷有問題啦
public String yaoqinglist() throws Exception {
try{
//bgndate 和 enddate 傳過來是字符串的類型
ActWork actWork=new ActWork();
// 小寫的mm表示的是分鐘
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (bgndate!=null&&bgndate!=""&&enddate!=null && enddate!="")) {
Date bDate = sdf.parse(bgndate);
Date eDate = sdf.parse(enddate);
String format = sdf.format(bDate);
String startTime = format.replace("-", "");// 去特殊字符
actWork.setStartTime(startTime);//展會開始時間 如:20190401
String format1 = sdf.format(eDate);// 去特殊字符
String endTime = format1.replace("-", "");
actWork.setEndTime(endTime);//展會結束時間 如:20190430
}
....省略
}catch (Exception e){
log.error(e.toString(), e);
return ERROR;
}
return "worklist";
[2]尋找原因:java數據類型的使用用錯了,尷尬的不行,java 基礎很重要呀 !我們都知道 ,java 分爲基礎數據類型(byte,short,char,int,long,float,double,boolean )和複合類型(String ,Intger,Long 等),基礎類型使用"=="比較,複合類型使用"equals"進行比較,而我使用的變量是String類型,但是我用如bgndate!=""這就肯定不行了,使用equals就可以了。
[3] if (bgndate!=null&&!bgndate.equals("") &&enddate!=null&& !enddate.equals("")) 解決如下:
public String yaoqinglist() throws Exception {
try{
//bgndate 和 enddate 傳過來是字符串的類型
ActWork actWork=new ActWork();
// 小寫的mm表示的是分鐘
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (bgndate!=null&&!bgndate.equals("") &&enddate!=null&& !enddate.equals("")) {
Date bDate = sdf.parse(bgndate);
Date eDate = sdf.parse(enddate);
String format = sdf.format(bDate);
String startTime = format.replace("-", "");// 去特殊字符
actWork.setStartTime(startTime);//展會開始時間 如:20190401
String format1 = sdf.format(eDate);// 去特殊字符
String endTime = format1.replace("-", "");
actWork.setEndTime(endTime);//展會結束時間 如:20190430
}
....省略
}catch (Exception e){
log.error(e.toString(), e);
return ERROR;
}
return "worklist";
OK 就到這裏嘍!(^_^)