■ 困っていること
登録画面から登録したデータがNULLとしてDBに登録されてしまいます。
全てのファイルを上から下まで読み、文法とスペルミスを確認しましたが、見つけられませんでした。
恐れ入りますが、原因箇所の特定の仕方についてご教示いただけたら嬉しいです。
よろしくお願いいたします。
■ 開発環境
環境:
・macOS Big Sur 11.4
・Pleiades All in One (Eclipse 2019-12)
・MySQL 8.0.25
・DBeaver 21.1.0
■ Githubのレポジトリ
https://github.com/Marina-fruits/Dairy-Reflection/tree/master/src/work
■ 作りたい機能
・【登録画面】4つのテキストボックスに、値を入れてDBに登録する。
・【一覧画面】登録した値が一覧として表示される。
・【ログイン画面】IDとPWがDBの値と一致すれば、ログインし、【登録画面】を表示することができる。
■ 起きている問題
・【登録画面】で登録した内容が、DBにNULLとして登録されてしまう。
■ エラーメッセージ
txt
1重大: サーブレット [ShowAllRecords] のServlet.service()が例外を投げました [土 8月 14 11:35:23 JST 2021]
eclipseのコンソールに出ています。サーバー起動メッセージの直後に出ているのは、この一文だけです。
また、この一文以外は、「重大」ではなく「情報」と書かれています。
このエラーメッセージで検索を行なったところ、「doPostメソッドの実装に誤りがある」ことが原因の一つとして挙げられていましたが、
私のdoPostメソッドに誤りが確認できませんでした。
https://teratail.com/questions/118925
■ 解決のために行ったこと
どのファイルに原因がありそうかを考えました。
txt
1◯・・・原因ではないと思われるファイル 2△・・・原因かもしれないファイル 3×・・・原因である可能性が高いと考えているファイル 4 51:【◯】InputRecords.java|HTML出力 62:【×】SaveRecords.java| リクエストの受け取り 7→受け取った「あ」などの値がNULLになってしまっている 83:【◯】SaveRecordsBL.java| DAO(RecordsDao)呼び出し 94:【◯】RecordsDao.java| doInsertメソッド実行 105:【◯】REFLECTIONテーブル insert実行 116:【△】RecordsDao.java| dtoListをRecordsDtoに返す 12→2で直らなければ、ここも間違えている可能性あり 137:【△】RecordsDto.java| SaveRecordsBLに返す 14→2で直らなければ、ここも間違えている可能性あり 158:【◯】SaveRecordsBL.java| DB操作成功フラグをSaveRecordsに返す 169:【◯】SaveRecords.java| テーブルに登録し、成功or失敗画面に遷移する
2のリクエストの受け取りを行っている箇所のコードを確認しましたが、誤りを見つけられませんでした。
他のファイルも全て上から下まで文法とスペルミスを確認しましたが、見つけられませんでした。
Java
1//リクエストパラメータを取得 2String initiative = request.getParameter("INITIATIVE"); //リクエストパラメータ(INITIATIVE) 3String accomplishment = request.getParameter("ACCOMPLISHMENT"); //リクエストパラメータ(ACCOMPLISHMENT) 4String to_improve_work = request.getParameter("TO_IMPROVE_WORK"); //リクエストパラメータ(TO_IMPROVE_WORK) 5String to_improve_commu = request.getParameter("TO_IMPROVE_COMMU"); //リクエストパラメータ(TO_IMPROVE_COMMU) 6 7//毎日の記録データ(RecordsDto型)の作成(今回リクエストパラメータで受け取った値を変数に入れていく) 8RecordsDto dto = new RecordsDto(); 9dto.setInitiative( initiative ); 10dto.setAccomplishment( accomplishment ); 11dto.setTo_improve_work( to_improve_work ); 12dto.setTo_improve_commu( to_improve_commu ); 13dto.setTime( new Timestamp(System.currentTimeMillis()) ); //現在時刻を更新時刻として設定
■ javaファイル内のコメントについて
教材のファイルを書き換えたものであり、所々、RecordsであるべきところがSurveyになっているところがあります。
Surveyは、Recordsに読み直していただけると嬉しいです。
(現在、GithubのPATを設定中で、完了次第gitにアップします。)
回答2件
あなたの回答
tips
プレビュー