質問: ### 前提・実現したいこと JSPServletでcsvファイルを読み込むシステムを作っています。 【csvファイルの各セルが各字数制限を超えた場合(200文字以上でエラーです)、jspにエラー文を表示する】機能を実装中に以下の問題が発生しました。 ### 発生している問題・エラーメッセージ ``` 【エラーした該当のセルを全てjspに表示させたいのですが、最後に読み込んだエラーのセルだけがjspに表示されてしまいます】 ``` ### 該当のソースコード ``` (Servletです) for{i++ for{j++ csv[i][j] if(csv[i][j]≧ 200){ request.setAttribute(”errorMessage”、”エラー文”) ... ... ... ソースコードはもっと複雑なのですが、該当箇所についてまとめるとこのような記述になっています。 ``` ### 試したこと String型で変数を作って、右辺にはあらかじめcsvファイルを収めていたリストを代入しました。 エラー箇所をその都度足していって、最後にまとめてセットしようと判断しました。 String error ; for{i++ for{j++ csv[i][j] if(csv[i][j]≧ 200){ ★error += list[i][j] request.setAttribute(”errorMessage”、”エラー文”) ... ... ... しかし、+=の部分でエラーになってしまいました。 どなたかアドバイスをよろしくお願いいたします。 ### 補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報
回答: 追記ありがとうございました。確かに request.setAttribute("errorMessage" , エラーメッセージ内容)を毎回上書きしてしまっていますね。 その場合は、エラーメッセージを複数持てるよう、動的配列に持たせてしまうのが良いでしょうか。 一番かんたんなのは、java.util.ArrayListを使います。 ループの中では次のように ``` List errorMessages = new ArrayList(); ...ループ... errorMessages.add( list[i][j] ); ... ...ループ終了 request.setAttribute(”errorMessage”, errorMesssages); ``` とすることで、複数のメッセージがList型になって errorMessage の名前でリクエスト属性に格納されます。 あとはJSPにて、errorMessage の内容をループ処理で取り出すと良いかと。