研修を始めて数日しかっていません。初歩的な質問でしたら申し訳ないです。
現在、プロジェクト型研修で画面の機能追加作業をしています。
日報・週報を提出する画面で必須項目が入力されているかの未入力チェック、
未入力の場合は「haserror」を利用してエラー文を出して入力画面に遷移
必須項目が入力されている場合は情報の登録のような処理を追記したいです。
ただ、文字列が格納されているのが配列なのでvalidationのNotBlankは使用できないらしく、
Java側でNull、空文字判定するメソッドを書くように研修担当者からアドバイスをいただきました。
なのでその方向で進めています。
また環境はSpring Boot Suiteを使用していて、@Controllerと@Serviceがあります。
文字列判定メソッドは@Serviceに記載すると思うんですが、「haserror」を用いて入力画面に
戻したいので、「haserror」の処理は@Controllerに記載した方がよいのでしょうか。
どのように処理書いていいのかイメージがわかなくて、手が止まってしまっている状況です。
ご教授お願いします。
※他にも関連しているコードはあるのですが書き加える部分だけ抜粋しています。
気になる部分があれば言ってください。
HTML
1<form th:method="post" th:action="@{/report/complete}" 2 class="form-horizontal" th:object="${dailyReportSubmitForm}"> 3 <div class="well bs-component" 4 th:if="*{intelligibilityFlg} == 1"> 5 <fieldset> 6 7 ~省略~ 8 9 <!-- 入力フォーム --> 10 <textarea class="form-control" rows="3" 11 th:id="|content_${stat.index}|" 12 th:name="|content[${stat.index}]|" th:errorclass="errorInput" >[[*{content[__${stat.index}__]}]]</textarea> 13 </div> 14 </div> 15 </fieldset> 16 </div> 17 18 ~省略~ 19 20 </form> 21
dailyReportSubmitForm
1package jp.co.sss.lms.form; 2 3public class DailyReportSubmitForm { 4 5~省略~ 6 private String[] content; 7 8 9~省略~
ReportController
1package jp.co.sss.lms.controller; 2 3~省略~ 4 5@Controller 6@RequestMapping("/report") 7public class ReportController { 8 9 @Autowired 10 private ReportService reportService; 11 12/** 13 * レポート提出 14 * 15 * @param dailyReportSubmitForm 16 * @param model 17 * @return セクション詳細画面 18 * @throws ParseException 19 */ 20 @RequestMapping(path = "/complete", method = RequestMethod.POST) 21 public String complete(@ModelAttribute DailyReportSubmitForm dailyReportSubmitForm, BindingResult result, 22 Model model) throws ParseException { 23 24 reportService.submit(dailyReportSubmitForm); 25 26 return "redirect:/section/detail?sectionId=" + dailyReportSubmitForm.getSectionId(); 27 } 28
ReportService
1package jp.co.sss.lms.service; 2 3 4~省略~ 5 /** 6 * レポート登録処理 7 */ 8 public void submit(DailyReportSubmitForm form) throws ParseException { 9 10 TDailyReportSubmit tDailyReportSubmit = new TDailyReportSubmit(); 11 12 tDailyReportSubmit.setDailyReportId(Integer.parseInt(form.getDailyReportId())); 13 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/M/d"); 14 tDailyReportSubmit.setDate(new Timestamp(sdf.parse(form.getDate()).getTime())); 15 Integer lmsUserId = null; 16 if (loginUserUtil.isStudent()) { 17 lmsUserId = loginUserDto.getLmsUserId(); 18 } else { 19 lmsUserId = Integer.parseInt(form.getLmsUserId()); 20 } 21 Timestamp timestamp = new Timestamp(System.currentTimeMillis()); 22 tDailyReportSubmit.setLmsUserId(lmsUserId); 23 tDailyReportSubmit.setAccountId(loginUserDto.getAccountId()); 24 tDailyReportSubmit.setDeleteFlg(Constants.DB_FLG_FALSE); 25 tDailyReportSubmit.setLastModifiedUser(loginUserDto.getLmsUserId()); 26 tDailyReportSubmit.setLastModifiedDate(timestamp); 27 28 if (form.getDailyReportSubmitId() == null || form.getDailyReportSubmitId().equals("")) { 29 tDailyReportSubmit.setFirstCreateUser(loginUserDto.getLmsUserId()); 30 tDailyReportSubmit.setFirstCreateDate(timestamp); 31 tDailyReportSubmitMapper.insert(tDailyReportSubmit); 32 } else { 33 tDailyReportSubmit.setDailyReportSubmitId(Integer.parseInt(form.getDailyReportSubmitId())); 34 tDailyReportSubmitMapper.update(tDailyReportSubmit); 35 36 // レポート詳細の削除 37 Integer countSubmitDetail = tDailyReportSubmitDetailMapper 38 .getCountByDailyReportSubmitId(tDailyReportSubmit.getDailyReportSubmitId()); 39 if (countSubmitDetail > 0) { 40 tDailyReportSubmitDetailMapper.delete(tDailyReportSubmit.getDailyReportSubmitId()); 41 } 42 // 理解度の削除 43 Integer countIntelligibility = tIntelligibilityMapper 44 .getCountByDailyReportSubmitId(tDailyReportSubmit.getDailyReportSubmitId()); 45 if (countIntelligibility > 0) { 46 tIntelligibilityMapper.delete(tDailyReportSubmit.getDailyReportSubmitId()); 47 } 48 } 49 50 // レポート詳細登録 51 for (int i = 0; i < form.getContent().length; i++) { 52 TDailyReportSubmitDetail tDailyReportSubmitDetail = new TDailyReportSubmitDetail(); 53 tDailyReportSubmitDetail.setDailyReportSubmitId(tDailyReportSubmit.getDailyReportSubmitId()); 54 tDailyReportSubmitDetail.setFieldNum(i + 1); 55 tDailyReportSubmitDetail.setContent(form.getContent()[i]); 56 tDailyReportSubmitDetail.setAccountId(tDailyReportSubmit.getAccountId()); 57 tDailyReportSubmitDetail.setDeleteFlg(Constants.DB_FLG_FALSE); 58 tDailyReportSubmitDetail.setFirstCreateUser(loginUserDto.getLmsUserId()); 59 tDailyReportSubmitDetail.setFirstCreateDate(timestamp); 60 tDailyReportSubmitDetail.setLastModifiedUser(loginUserDto.getLmsUserId()); 61 tDailyReportSubmitDetail.setLastModifiedDate(timestamp); 62 tDailyReportSubmitDetailMapper.insert(tDailyReportSubmitDetail); 63 } 64 65 // 理解度登録 66 if (form.getIntFieldName() != null) { 67 for (int j = 0; j < form.getIntFieldName().length; j++) { 68 TIntelligibility tIntelligibility = new TIntelligibility(); 69 tIntelligibility.setDailyReportSubmitId(tDailyReportSubmit.getDailyReportSubmitId()); 70 tIntelligibility.setFieldNum(j + 1); 71 tIntelligibility.setFieldName(form.getIntFieldName()[j]); 72 tIntelligibility.setFieldValue(StringUtils.isBlank(form.getIntFieldValue()[j]) ? null 73 : Short.parseShort(form.getIntFieldValue()[j])); 74 tIntelligibility.setAccountId(tDailyReportSubmit.getAccountId()); 75 tIntelligibility.setDeleteFlg(Constants.DB_FLG_FALSE); 76 tIntelligibility.setFirstCreateUser(loginUserDto.getLmsUserId()); 77 tIntelligibility.setFirstCreateDate(timestamp); 78 tIntelligibility.setLastModifiedUser(loginUserDto.getLmsUserId()); 79 tIntelligibility.setLastModifiedDate(timestamp); 80 tIntelligibilityMapper.insert(tIntelligibility); 81 } 82 } 83 } 84 85 /** 86 * Null、空文字判定 87 * 88 * 89 * 90 */ 91 public BindingResult inputCheck(@Validated@ModelAttribute DailyReportSubmitForm dailyReportSubmitForm, 92 BindingResult result, Model model) { 93 94 String[] inputCheck = {}; 95 inputCheck = dailyReportSubmitForm.getContent(); 96 if(inputCheck == null) { 97 98 } 99 return result; 100 }
回答1件
あなたの回答
tips
プレビュー