質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.92%

Spring DBに登録できない。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 875

score 11

確認画面へ出力できた値をDBへ登録しようとするも、エラーが出てしまいます。イメージ説明

エラー内容

java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.8.0_231]
    at java.lang.Integer.parseInt(Integer.java:592) ~[na:1.8.0_231]
    at java.lang.Integer.parseInt(Integer.java:615) ~[na:1.8.0_231]
    at com.example.web.db.MogipuroController.teacherNissiend(MogipuroController.java:165) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_231]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_231]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_231]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_231]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888) ~[spring-webmvc-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.27.jar:9.0.27]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
    at 


こ
<!DOCTYPE html>                                    
<html xmlns:th="http://www.thymeleaf.org">                                    
<head>                                    
<meta charset="UTF-8" />                                    

<title>タイムリー確認</title>                                    
</head>                                    
    <body>                                
    <h1>登録確認</h1>                                
        <p>※ 入力内容を確認してください。</p>                            

        <form th:action="@{/insert-ensyu1-end}" th:object="${insertMogipuroForm}" method="post">                            
        <table>                            
            <tr>                        
                <td>園児ID</td>                    
                <td>                    
                <span th:text="${insertMogipuroForm.childrenid}" ></span>                    
                </td>                    
        </tr>                            
        <tr>                            
        <td>園児氏名</td>                            
            <td>                        
        <span th:text="${insertMogipuroForm.name}"  ></span>                            
    </td>                                
    </tr>                                
    <tr>                                
            <td>記入日</td>                        
                <td>                    
                <span th:text="${insertMogipuroForm.year}"></span></td>                                
                <td>                    
                <span th:text="${insertMogipuroForm.month}"></span></td>                                
    <td>                                
            <span th:text="${insertMogipuroForm.day}"></span></td>                                
            </tr>                        

<tr>                                    
    <td>伝達事項</td>                                
        <td>                            
                <span th:text="${insertMogipuroForm.communication}" ></span>                
                </td>                    
</tr>                                    
    </table>                                

<input type="submit" name="timely_btn" value="登録する" />                                    
<input type="submit" name="back_btn" value="戻る" />                                    
</form>                                    

</html>                                    
package com.example.domain;                                                                                                    

import java.util.List;                                                                                                    

public class MogipuroInfo {                                                                                                    
    private String timelyid;                                                                                                
    private String id;                                                                                                
    private String name;                                                                                                
    private String classs;                                                                                                
    private String sleepstarttime;                                                                                                
    private String sleependtime;                                                                                                
    private String mood;                                                                                                
    private String poop;                                                                                                
    private String meal;                                                                                                
    private String phase;                                                                                                
    // 検索けんさくリスト                                                                                                
    private String searchid;                                                                                                
    public String serchtimelyid;                                                                                                
    private String searchstartyear;                                                                                                
    private String searchstartmonth;                                                                                                
    private String searchstartday;                                                                                                
    private String searchendyear;                                                                                                
    private String searchendmonth;                                                                                                
    private String searchendday;

    //保護者の
    private String pickuptime;                                                                                                
    private String communication;                                                                                                
    private String daybookwriter;                                                                                                
    private String writedate;                                                                                                
    private String childrenid;                                                                                                
    private String childrenname;                                                                                                
    private String timelywriter;                                                                                                
    private String year;                                                                                                
    private String month;                                                                                                
    private String day;                                                                                                
    private String startmin;                                                                                                
    private String endmin;                                                                                                
    private List<String> yearList;                                                                                                
    private List<String> monthList;                                                                                                
    private List<String> dayList;                                                                                                
    private List<String> startTimeList;                                                                                                
    private List<String> startMinList;                                                                                                
    private List<String> endTimeList;                                                                                                
    private List<String> endMinList;                                                                                                
    private String startwritedate;                                                                                                
    private String endwritedate;                                                                                                
    private String writedatetime;                                                                                                
    private String communicaton;                                                                                                
    private String starttime;                                                                                                
    private String endtime;                                                                                                
    private String theDate;                                                                                                
    private String startTime1;                                                                                                
    private String endTime1;                                                                                                

    public String getTheDate() {                                                                                                
        return theDate;                                                                                            
    }                                                
    }

    // 日誌登録確認から完了画面へリダイレクト ★DB登録
    @RequestMapping(value = "/teacher-nissi-end", params = "nissi_btn")
    public String teacherNissiend(@ModelAttribute("insertMogipuroForm") InsertMogipuroForm form) {
        // データ登録に利用するドメインクラスのインスタンス化
        MogipuroInfo inputNissiInfo = new MogipuroInfo();
// Formクラスの値をドメインクラスにコピー                                                                                                    
        BeanUtils.copyProperties(form, inputNissiInfo);
//登録用・登録用に変換                                                                                                    
        int year = Integer.parseInt(form.getYear());
        int month = Integer.parseInt(form.getMonth());
        int day = Integer.parseInt(form.getDay());
        String sleepstarttime1 = form.getSleepstarttime1();
        String sleependtime1 = form.getSleependtime1();
        String sleepstarttime2 = form.getSleepstarttime2();
        String sleependtime2 = form.getSleependtime2();
        String theDate = String.format("%04d%02d%02d", year, month, day);
        MogipuroInfo.setTheDate(theDate);
        MogipuroInfo.setStartTime1(sleepstarttime1 + ":" + sleependtime1);
        MogipuroInfo.setEndTime1(sleepstarttime2 + ":" + sleependtime2);
        System.out.print(form.getYear());

// データ登録を行うためのサービス処理呼び出し                                                                                                    
        service.inputNissiInfo(inputNissiInfo);

        return "redirect:/teacher-nissi-end?finish";
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2019/11/23 07:23

    しつもんはなにでしょうか。
    解決する気のある人の質問には到底見えません。
    丸投げにも程があります。

    キャンセル

回答 1

checkベストアンサー

+2

java.lang.NumberFormatException: For input string: ""
...
...
com.example.web.db.MogipuroController.teacherNissiend(MogipuroController.java:165)

とあるように、Controllerクラスの165行目で 空文字に対しintへ変換しようとして例外がスローされています。おそらく

int year = Integer.parseInt(form.getYear());
int month = Integer.parseInt(form.getMonth());


のどちらかで、formから値を取得しているが値が入っていないのが原因です。

HTMLテンプレートのコードを拝見したことから想像しますが、もし登録確認画面から登録する画面では、前画面で入力したものを引き継く仕組みが必要です。
つまり、画面からはその登録情報が送信されません。

入力した情報を一時的に保持するセッションなどを利用し、データ登録時にはセッションから値を取得する方法が一番簡単でしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/11/23 16:05

    ありがとうございます。おかげで値は保持できました。しかしDBに登録する際にまたエラーとなってしまいました。頑張ります。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る