いつもお世話になっております。
画面側で各入力フォームにコメントを入力して、公開開始日を過ぎたら表示するようなプログラムを作成しています。
jspで入力フォームを作り上げることはできましたが
実装クラスでフォーム内の値が取得できずnullとなってしまします。
デバッグを行って入力したformの値が入っていないことは確認できたのですが、具体的にどこがおかしいのか
原因を追究できず困っている状況ですのでご教授いただければと思います。
実行環境は
・Java8
・Apache Tomcat8
です。
よろしくお願いいたします。
やってみたこと。
jsp側の記述
<form:form modelAttribute="commentReportForm" action="commentReportRegister" method="post">
に変更してみました。
→formの値が取得できないのでエラーを吐かれます
Controller
1 @RequestMapping(value = "commentReportRegister", method = RequestMethod.POST, params = "select") 2 public String register(@ModelAttribute @Validated CommentReportForm form, BindingResult result, Principal principal, 3 Model model, HttpServletRequest request, @RequestParam(name = "select") String userId) 4 throws ComponentException { 5 6 try { 7 // PrincipalからユーザNo.取得 8 Authentication authentication = (Authentication) principal; 9 ReservationUserDetails reservationUserDetails = (ReservationUserDetails) authentication.getPrincipal(); 10 LoginInfoBean loginInfoBean = reservationUserDetails.getLoginInfoBean(); 11 12 if (result.hasErrors()) { 13 return this.init(model, request, userId); 14 } 15 16 this.commentReportInterface.registerCommentReport(form, loginInfoBean.getUserNo()); 17 18 return "redirect:/manager/commentReportList"; 19 20 } catch (Exception e) { 21 e.printStackTrace(); 22 throw new ComponentException("コメント登録処理例外発生.", e); 23 } 24 }
form
1public class CommentReportForm { 2 //ユーザーNo(NotNull) 3 private String userNo; 4 //コメント年月日(NotNull) 5 private LocalDate commentDate; 6 //コメント1 7 private String comment1Text; 8 //コメント2 9 private String comment2Text; 10 //コメント3 11 private String comment3Text; 12 //公開開始日(NotNull) 13 private Timestamp releaseStartTimestamp; 14 15 /** 16 * @return userNo 17 */ 18 public String getUserNo() { 19 return userNo; 20 } 21 22 /** 23 * @param userNo 24 * セットする userNo 25 */ 26 public void setUserNo(String userNo) { 27 this.userNo = userNo; 28 } 29 30 /** 31 * @return commentDate 32 */ 33 public LocalDate getCommentDate() { 34 return commentDate; 35 } 36 37 /** 38 * @param commentDate2 39 * セットする commentDate 40 */ 41 public void setCommentDate(LocalDate commentDate2) { 42 this.commentDate = commentDate2; 43 } 44 45 /** 46 * @return comment1Text 47 */ 48 public String getComment1Text() { 49 return comment1Text; 50 } 51 52 /** 53 * @param comment1Text 54 * セットする comment1Text 55 */ 56 public void setComment1Text(String comment1Text) { 57 this.comment1Text = comment1Text; 58 } 59 60 /** 61 * @return comment2Text 62 */ 63 public String getComment2Text() { 64 return comment2Text; 65 } 66 67 /** 68 * @param comment2Text 69 * セットする comment2Text 70 */ 71 public void setComment2Text(String comment2Text) { 72 this.comment2Text = comment2Text; 73 } 74 75 /** 76 * @return comment3Text 77 */ 78 public String getComment3Text() { 79 return comment3Text; 80 } 81 82 /** 83 * @param comment3Text 84 * セットする comment3Text 85 */ 86 public void setComment3Text(String comment3Text) { 87 this.comment3Text = comment3Text; 88 } 89 90 /** 91 * @return releaseStartTimestamp 92 */ 93 public Timestamp getReleaseStartTimestamp() { 94 return releaseStartTimestamp; 95 } 96 97 /** 98 * @param releaseStartTimestamp 99 * セットする releaseStartTimestamp 100 */ 101 public void setReleaseStartTimestamp(Timestamp releaseStartTimestamp) { 102 this.releaseStartTimestamp = releaseStartTimestamp; 103 } 104 105} 106
Implements
1 @Override 2 public int registerCommentReport(CommentReportForm form, Integer userNo) throws ComponentException { 3 CommentReportDto dto = new CommentReportDto(); 4 dto.setUserNo(userNo); 5 dto.setCommentDate(ServerParam.getLocalDate()); 6 dto.setComment1Text(form.getComment1Text()); 7 dto.setComment2Text(form.getComment2Text()); 8 dto.setComment3Text(form.getComment3Text()); 9 dto.setReleaseStartTimestamp(form.getReleaseStartTimestamp()); 10 dto.setRegistrantNo(userNo); 11 dto.setRegisterTimestamp(ServerParam.getTimestamp()); 12 return this.commentReportDao.registerCommentReport(dto); 13 } 14
Dao
1 public int registerCommentReport(CommentReportDto dto) throws ComponentException { 2 3 StringBuilder sql = new StringBuilder(); 4 sql.append(" insert into trn_comment_report ("); 5 sql.append(" user_no"); //ユーザーNo 6 sql.append(" ,comment_date"); // コメント年月日 7 sql.append(" ,comment1_text"); // コメント1 8 sql.append(" ,comment2_text"); // コメント2 9 sql.append(" ,comment3_text"); // コメント3 10 sql.append(" ,release_start_timestamp");//公開開始日時 11 sql.append(" ,registrant_no"); //登録者No. 12 sql.append(" ,register_timestamp"); //登録日時 13 sql.append(" )values("); 14 sql.append(" ?, ?, ?, ?, ?, ?, ?, ?"); 15 sql.append(" );"); 16 17 try { 18 return this.jdbcTemplate.update(sql.toString(), dto.getUserNo(),dto.getCommentDate(), dto.getComment1Text(), 19 dto.getReleaseStartTimestamp(),dto.getComment2Text(), dto.getComment3Text(), dto.getRegistrantNo(), dto.getRegisterTimestamp()); 20 21 } catch (Exception e) { 22 e.printStackTrace(); 23 throw new ComponentException("コメント登録処理失敗.", e); 24 } 25 }
ServerParam
1public final class ServerParam { 2 3 /** 4 * @return サーバ内年月日 5 */ 6 public static LocalDate getLocalDate() { 7 return LocalDate.now(); 8 } 9 10 /** 11 * @return サーバ内時間 12 */ 13 public static LocalTime getLocalTime() { 14 return LocalTime.now(); 15 } 16 17 /** 18 * @return サーバ内年月日時間 19 */ 20 public static LocalDateTime getLocalDateTime() { 21 return LocalDateTime.now(); 22 } 23 24 /** 25 * @return サーバ内年月日時間 26 */ 27 public static Date getDate() { 28 return Date.valueOf(LocalDate.now()); 29 } 30 31 /** 32 * @return サーバ内年月日 33 */ 34 public static Time getTime() { 35 return Time.valueOf(LocalTime.now()); 36 } 37 38 /** 39 * @return サーバ内時間 40 */ 41 public static Timestamp getTimestamp() { 42 return Timestamp.valueOf(LocalDateTime.now()); 43 } 44} 45
jsp
1<form:form modelAttribute="commentReportForm"> 2 <div class="container-fluid"> 3 <div class="row"> 4 <div class="col-12"> 5 <table id="commentList" class="table table-bordered"> 6 <thead class="thead-job-color"> 7 <tr> 8 <th>コメント</th> 9 </tr> 10 </thead> 11 <tbody> 12 <tr> 13 <td> 14 <p> 15 <label for="comment1" class="label-control">comment1</label><br> 16 <textarea id="comment1" name="comment1" rows="6" cols="80"></textarea> 17 </p> 18 19 <p> 20 <label for="comment2">comment2</label><br> 21 <textarea id="comment2" name="comment2" rows="6" cols="80"></textarea> 22 </p> 23 24 <p> 25 <label for="comment3">comment3</label><br> 26 <textarea id="comment3" name="comment3" rows="6" cols="80"></textarea> 27 </p> 28 </td> 29 </tr> 30 </tbody> 31 </table> 32 <table class="table table-bordered"> 33 <thead class="thead-job-color"> 34 <tr> 35 <th>公開開始日時</th> 36 </tr> 37 </thead> 38 <tbody> 39 <tr> 40 <td> 41 <p> 42 <input id="releaseStartTimestamp" name="releaseTimestamp" 43 class="form-control" type="datetime-local" 44 required="required" 45 value="<%=localDateTime.format(dateTimeFormatter)%>" /> 46 47 </p> 48 </td> 49 </tr> 50 </tbody> 51 </table> 52 </div> 53 </div> 54 </div> 55 <p class="text-center"> 56 <button onClick="javascript:forbiddenDoubleClick(this)" 57 class="button btn btn-success" type="submit">登録</button> 58 </p> 59</form:form>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/07 04:53
2020/05/07 04:59
2020/05/07 05:13
2020/05/07 05:44 編集
2020/05/07 06:02
2020/05/07 08:21 編集