前提・実現したいこと
JAVA(SpringToolSuite4でショッピングカート風なシステムを作っています。
履歴を表示したいのですが、<tbody>内の構文がうまくかけず、すべての履歴が表示されず、表示しても最新で購入したもののみの履歴しか表示されません。
今回、実現したいことは、履歴をすべて表示させることです。
お手隙の際にご教授いただければ幸いです。
書いたコード①
IndexController.java
java
1@ResponseBody 2 @PostMapping("/api/history") 3 public String historyApi(@RequestBody HistoryForm form) { 4 String userId = form.getUserId(); 5 List<Purchase>history = purchaseRepos.findHistory(Long.parseLong(userId)); 6 List<HistoryDto> historyDtoList = new ArrayList<>(); 7 history.forEach((v) ->{ 8 HistoryDto dto = new HistoryDto(v); 9 historyDtoList.add(dto); 10 }); 11 12 return gson.toJson(historyDtoList); 13 }
HistoryDto.java
java
1public class HistoryDto { 2 3 private long id; 4 5 private long userId; 6 7 private long goodsId; 8 9 private String goodsName; 10 11 private long itemCount; 12 13 private long total; 14 15 private String createdAt; 16 17 public HistoryDto() {} 18 19 public HistoryDto(Purchase entity) { 20 this.id = entity.getId(); 21 this.userId = entity.getUserId(); 22 this.goodsId = entity.getGoodsId(); 23 this.goodsName = entity.getGoodsName(); 24 this.itemCount = entity.getItemCount(); 25 this.total = entity.getTotal(); 26 27 Timestamp d =entity.getCreatedAt(); 28 SimpleDateFormat f = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); 29 this.createdAt = f.format(d); 30 } 31 32 public HistoryDto(long id, long userId, long goodsId, String goodsName,long itemCount,long total,String createdAt) { 33 this.id = id; 34 this.userId = userId; 35 this.goodsId = goodsId; 36 this.goodsName = goodsName; 37 this.itemCount = itemCount; 38 this.total = total; 39 this.createdAt = createdAt; 40 } 41 42 public long getId() { 43 return id; 44 } 45 public void setId(long id) { 46 this.id = id; 47 } 48 49 public long getUserId() { 50 return userId; 51 } 52 public void setUserId(long userId) { 53 this.userId = userId; 54 } 55 56 public long getGoodsId() { 57 return goodsId; 58 } 59 public void setGoodsId(long goodsId) { 60 this.goodsId = goodsId; 61 } 62 63 public String getGoodName() { 64 return goodsName; 65 } 66 public void setGoodsName(String goodsName) { 67 this.goodsName = goodsName; 68 } 69 70 public long getItemCount() { 71 return itemCount; 72 } 73 public void setItemCount(long itemCount) { 74 this.itemCount = itemCount; 75 } 76 77 public long getTotal() { 78 return total; 79 } 80 public void setTotal(long total) { 81 this.total = total; 82 } 83 84 public String getCreatedAt() { 85 return createdAt; 86 } 87 public void setCreatedAt(String createdAt) { 88 this.createdAt = createdAt; 89 } 90}
書いたコード②(問題となる部分)
Index.html
html
1 2<button id="buyBtn">購入</button> 3 <button id="historyBtn">履歴</button> 4</fieldset> 5 6<div id="history" title="購入履歴" style="display:none;"> 7<table id="historyTable"> 8 <thead> 9 <tr> 10 <th>商品名</th><th>注文数</th><th>購入日時</th> 11 </tr> 12 </thead> 13 <tbody> 14 <tr th:each="item : ${historyDtoList}"> 15 <td th:text="${item.goodsName}"/> 16 <td th:text="${item.itemCount}" /> 17 <td th:text="${item.createdAt}" /> 18 </tr> 19 20 21 </tbody> 22</table>
書いたコード③
common.js
jquery
1 2 3let showHistory = () => { 4 $.ajax({ 5 type:'POST', 6 url: '/ecsite/api/history', 7 data: JSON.stringify({ "userId": $('#hiddenUserId').val()}), 8 contentType: 'application/json', 9 datatype: 'json', 10 scriptCharset: 'utf-8' 11 }) 12 .then((result) => { 13 let historyList = JSON.parse(result); 14 let tbody = $('#historyTable').find('tbody'); 15 $(tbody).children().remove(); 16 historyList.forEach((history, index) => { 17 let tr = $('<tr />'); 18 19 $('<td />',{ 'text': history.goodsName}).appendTo(tr); 20 $('<td />',{ 'text': history.itemCount}).appendTo(tr); 21 $('<td />',{ 'text': history.createdAt}).appendTo(tr); 22 23 $(tr).appendTo(tbody); 24 }); 25 $("#history").dialog("open"); 26 },() => { 27 console.error('Error: ajax connection failed.'); 28 } 29 ); 30 };
補足情報
SpringToolSite4(sts4.5.1)を使用
java側でのforEachがきちんと機能せず、webのコンソールで確認した結果
tbody内は書かれてないことになってます。
回答1件
あなたの回答
tips
プレビュー