前提・実現したいこと
1.画面からアップロードされたCSVファイルを読み取り、各データをBeanのフィールドに格納する。
2.生成したBean内の各フィールドのバリデーションチェックを行う。(空白チェックや桁数チェック等)
3.バリデーションチェックの結果を画面に表示する。(下記イメージ)
項目1 | 項目2 | 項目3 | ・・・ |
---|---|---|---|
値1 | 値2 <br> 桁数が超過しています。 | 値3 | ・・・ |
4.エラーとなった項目が無ければ結果確認後、DBに登録する。
発生している問題
上記1,2の実装方法について、2点質問です。
・両方ともBeanのコンストラクタ内で行ってもいいものか(アンチパターンかどうか)。
・各項目に対応するエラーメッセージを保持するフィールドもこのBeanに含めていいものか。(もっといいデザインパターンがないか)
該当のソースコード
以上2点そのまま実装した場合こんな感じの実装になります。
Java
1public class CsvDataBean { 2 private boolean isValid; 3 private String column1; 4 private String column1ErrorMessage; 5 private String column2; 6 private String column2ErrorMessage; 7 省略 8 9 public CsvDataBean (String[] csvColumns) { 10 this.isValid = true; 11 try { 12 this.column1 = csvColumns[0]; 13 this.column2 = csvColumns[1]; 14 省略 15 16 } catch (IndexOutOfBoundsException e) { 17 this.isValid = false; 18 } 19 20 try { 21 this.validate(); 22 } catch (Exception e) { 23 this.isValid = false; 24 } 25 } 26 27 private void validate(){ 28 if(this.column1 == null) { 29 this.column1ErrorMessag = "値1が空白です。" 30 this.isValid = false; 31 } 32 省略 33 } 34}
補足情報(FW/ツールのバージョンなど)
Spring Boot 2
Thymeleaf 3
回答2件
あなたの回答
tips
プレビュー