前提・実現したいこと
springフレームワークを使ってアクセサリーショップのECサイトを作成しております。
htmlの表示が思うように表示されず困っています。
そのためコントローラやリポジトリが正しいのかも分かりません。
プログラミング初心者です。
ご教授ください。
メインページの商品の一覧として、
・過去に注文履歴がない場合→新着順に商品が表示される
・過去に注文履歴がない(未ログインor会員登録はあるが注文履歴がない)場合→売筋順に商品が表示される
トップページを作りたいのですが商品が全く表示されません。
原因と対処法を教えていただけますと、幸いです。
発生している問題・エラーメッセージ
実行エラーは出ないのですが、
ネットワークで開いてみると
表またはビューが存在しません。
と表示されます。
オーダーアイテムリポジトリ
public interface OrderItemRepository extends JpaRepository<OrderItem, Integer> { //注文票(オーダーアイテム)の商品を集計し、それをカウントする @Query(value="select OrderItem(item) from OrderItem o group by o.item order by count(o.item) desc", nativeQuery=true) public List<OrderItem> findItem();
コントローラ
@RequestMapping(path = "/") public String menu( Model model, Pageable pageable) { //売れ筋順で商品検索 List<OrderItem>orderItemList = orderItemRepository.findItem(); List<Item> items = new ArrayList<Item>(); //for文でカウント for(int i=0; i< orderItemList.size(); i++) { if (orderItemList.get(i).getItem().getDeleteFlag()==0) items.add(orderItemList.get(i).getItem()); } //ページ、ページ遷移処理 Page<Item> pages= Convert.listConvertToPage(items,pageable); //ビューに商品情報を渡す処理 model.addAttribute("items",pages.getContent()); Page<Item>itemList = null; //商品が空の場合は新着順検索 if(items.isEmpty()) { itemList= itemRepository.findByDeleteFlagOrderByInsertDateDesc(Constant.NOT_DELETED,pageable); // エンティティ内の検索結果をJavaBeansにコピー List<ItemBean> itemBeanList = BeanCopy.copyEntityToItemBean(itemList.getContent()); // 商品情報をViewへ渡す model.addAttribute("items", itemBeanList); model.addAttribute("flg", 1); } return "index";
###コンバーター
public class Convert { public static <T> Page<T> listConvertToPage(List<T> list, Pageable pageable) { int start = (int)pageable.getOffset(); int end= (start + pageable.getPageSize()) > list.size() ? list.size() : ( start + pageable.getPageSize()); return new PageImpl<T>(list.subList(start, end), pageable, list.size()); }}
HTML
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" th:replace="~{common/layout_5block :: layout(~{::body/content()})}"> <head> <title>トップ </title> <meta charset="UTF-8" /> </head> <body class="user index"> <!-- 売れ筋商品の場合表示 --> <div th:if="${flg==1}"> <h2 class="title">売れ筋商品</h2> </div> <!-- 新着商品の場合表示 --> <div th:if="${flg!=1}"> <h2 class="title">新着商品</h2> </div> <!-- 商品情報がない場合は無い旨を表示 --> <div th:if="${#lists. isEmpty(items)}"> <p th:text="#{itemList.none}" /> </div> <!-- 商品情報がある場合 --> <!-- 情報の商品画像を表示、または無画像を表示 --> <div th:if="!${#lists.isEmpty(items)}"> <div class="item" th:each="item: ${items}"> <span th:if="${item.image != null}"> <!-- 画像をクリックすることで商品画面に遷移 --> <a th:href="@{/item/detail//{id}(id=${item.id})}"> <img th:src="@{/img/{image}(image=${item.image})}"></img></a> </span> <span th:if="${item.image == null}"> <img th:src="@{/img/common/no_image.jpg}"></img> </span> </div> </div> </body> </html>
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー