前提・実現したいこと
社員管理システムを学習の一環で作っています。
社員情報の更新を行う際にエラーが発生しております。
発生している問題・エラーメッセージ
社員情報の更新ページでは「退職日」という項目が存在します。
これは必要に応じて入力するものになりますが、入力せずに更新を行うと
以下NullPointerExceptionのエラーが発生します。
error
1java.lang.NullPointerException 2 at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1439) 3 at java.text.DateFormat.parse(DateFormat.java:364) 4 at convert.Convert.formatDateSlash(Convert.java:35) 5 at dao.EmployeeInfoDao.findDetail(EmployeeInfoDao.java:144) 6 at controller.DetailController.doPost(DetailController.java:134) 7 at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 8 at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 9 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 10 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 11 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 12 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 13 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 14 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 15 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) 16 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 17 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 18 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) 19 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 20 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) 21 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) 22 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) 23 at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) 24 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 25 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 26 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 27 at java.lang.Thread.run(Thread.java:748)
該当のソースコード
java
1public String formatDateSlash(String formatDate) { 2 3 Constants strConst = new Constants(); 4 5 try { 6 //フォーマットパターンを'yyyy-MM-dd'に指定します。 7 SimpleDateFormat format1 = new SimpleDateFormat(strConst.AD_DATE_DASH, Locale.ENGLISH); 8 Date date = format1.parse(formatDate); 9 //フォーマットパターンを'yyyy/MM/dd'に変更します。 10 SimpleDateFormat format2 = new SimpleDateFormat(strConst.AD_DATE_SLASH); 11 formatDate = format2.format(date); 12 13 return formatDate; 14 15 } catch (ParseException e) { 16 17 e.printStackTrace(); 18 return null; 19 20 } catch (NullPointerException e) { 21 22 e.printStackTrace(); 23 return null; 24 25 } finally { 26 27 } 28 }
試したこと
try-catchでNullPointerExceptionを例外処理するようにしましたが、
変わらずエラーが発生します。
どうかご教授いただければ幸いです。
###追記
呼び出し元のソースコードです。
EmployeeInfoDao
1public EmployeeInfoDto findDetail(String employee_id) { 2 3 EmployeeInfoDto employeeInfoDto = null; 4 Connection conn = null; 5 PreparedStatement pStmt = null; 6 ResultSet rs = null; 7 int employeeId; 8 9 try { 10 11 employeeId = Integer.parseInt(employee_id); 12 13 Convert cvrt = new Convert(); 14 SqlConstants sqlConst = new SqlConstants(); 15 Constants strConst = new Constants(); 16 17 Class.forName(sqlConst.JDBC_DRIVER); 18 conn = DriverManager.getConnection(sqlConst.DB_CONNECT_URI, sqlConst.USER_NAME, sqlConst.PASSWORD); 19 pStmt = conn.prepareStatement(sqlConst.SEARCH_EMPLOYEE_DETAIL); 20 pStmt.setInt(1, employeeId); 21 rs = pStmt.executeQuery(); 22 23 while (rs.next()) { 24 25 employeeInfoDto = new EmployeeInfoDto(); 26 employeeInfoDto.setEmployeeId(rs.getString(strConst.EMPLOYEE_ID)); 27 employeeInfoDto.setName(rs.getString(strConst.NAME)); 28 employeeInfoDto.setNameHiragana(rs.getString(strConst.NAME_HIRAGANA)); 29 employeeInfoDto.setBirthday(cvrt.formatDateSlash(rs.getString(strConst.BIRTHDAY))); 30 employeeInfoDto.setSex(rs.getString(strConst.SEX)); 31 employeeInfoDto.setMailAddress(rs.getString(strConst.MAIL_ADDRESS)); 32 employeeInfoDto.setTelephoneNumber(cvrt.addDash(rs.getString(strConst.TELEPHONE_NUMBER))); 33 employeeInfoDto.setCompanyInfoId(rs.getString(strConst.COMPANY_INFO_ID)); 34 employeeInfoDto.setBusinessManager(rs.getString(strConst.BUSINESS_MANAGER)); 35 employeeInfoDto.setDepartment(rs.getString(strConst.DEPARTMENT)); 36 employeeInfoDto.setCommissioningStatus(rs.getString(strConst.COMMISSIONING_STATUS)); 37 employeeInfoDto.setEnterDate(cvrt.formatDateSlash(rs.getString(strConst.ENTER_DATE))); 38 employeeInfoDto.setRetireDate(cvrt.formatDateSlash(rs.getString(strConst.RETIRE_DATE))); 39 employeeInfoDto.setStatus(rs.getString(strConst.STATUS)); 40 41 return employeeInfoDto; 42 } 43 44 } catch (SQLException e) { 45 e.printStackTrace(); 46 47 return null; 48 49 } catch (ClassNotFoundException e) { 50 e.printStackTrace(); 51 52 return null; 53 54 } catch (NumberFormatException e) { 55 e.printStackTrace(); 56 57 return null; 58 59 } finally { 60 61 if (conn != null) { 62 63 try { 64 65 conn.close(); 66 67 } catch (SQLException e) { 68 e.printStackTrace(); 69 70 return null; 71 72 } 73 } 74 } 75 return employeeInfoDto; 76 } 77
回答2件
あなたの回答
tips
プレビュー