🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

1377閲覧

spring beanについて

satesate

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

0クリップ

投稿2019/11/14 00:47

編集2019/11/14 01:23

質問内容

プログラミング初心者です。
springを現在使用しており、ビーンから情報を取ることに苦戦しています。。。
皆さんのお力をお貸しいただけると幸いです。

コード

**ビーン** package jp.co.sss.shop.bean; /** * 会員情報クラス * * @author SystemShared */ public class UserBean { /** * 会員ID */ private Integer id; /** * 会員メールアドレス */ private String email; /** * パスワード */ private String password; /** * 会員名 */ private String name; /** * 郵便番号 */ private String postalCode; /** * 住所 */ private String address; /** * 電話番号 */ private String phoneNumber; /** * 権限 */ private Integer authority; /** * 削除フラグ 0:未削除、1:削除済み */ private Integer deleteFlag; /** * 登録日付 */ private String insertDate; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPostalCode() { return postalCode; } public void setPostalCode(String postalCode) { this.postalCode = postalCode; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public Integer getAuthority() { return authority; } public void setAuthority(Integer authority) { this.authority = authority; } public Integer getDeleteFlag() { return deleteFlag; } public void setDeleteFlag(Integer deleteFlag) { this.deleteFlag = deleteFlag; } public String getInsertDate() { return insertDate; } public void setInsertDate(String insertDate) { this.insertDate = insertDate; } }
**コントローラ** package jp.co.sss.shop.controller.order; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpSession; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import jp.co.sss.shop.bean.OrderBean; import jp.co.sss.shop.bean.OrderItemBean; import jp.co.sss.shop.bean.UserBean; import jp.co.sss.shop.entity.Order; import jp.co.sss.shop.entity.OrderItem; import jp.co.sss.shop.form.OrderShowForm; import jp.co.sss.shop.repository.OrderRepository; import jp.co.sss.shop.util.PriceCalc; /** * 注文管理 一覧表示機能(一般用)のコントローラクラス * * @author SystemShared */ @Controller public class OrderShowCustomerController { /** * 注文情報 */ @Autowired OrderRepository orderRepository; /** * セッション */ @Autowired HttpSession session; /** * 注文情報一覧表示処理 * * @param model * Viewとの値受渡し * @param form * 表示用注文情報 * @param session * セッション情報 * @param pageable * ページング情報 * @return "order/list/order_list_admin" 注文情報 一覧画面へ */ @RequestMapping(path = "/order/list", method = RequestMethod.GET) public String showOrderList(Model model, @ModelAttribute OrderShowForm form, Pageable pageable) { // ログイン中のユーザの注文情報を取得 UserBean userBean = new UserBean(); userBean.setId(getInteger(id)); Page<Order> orderList = orderRepository.findByUserIdOrderByInsertDateDesc(id, pageable); // 注文情報リストを生成 List<OrderBean> orderBeanList = new ArrayList<OrderBean>(); for (Order order : orderList){ OrderBean orderBean = new OrderBean(); orderBean.setId(order.getId()); orderBean.setUserName(order.getUser().getName()); orderBean.setInsertDate(order.getInsertDate().toString()); orderBean.setPayMethod(order.getPayMethod()); //注文時点の単価を合計するための一時変数 int total = 0; //orderレコードから紐づくOrderItemのListを取り出す List<OrderItem> orderItemList = order.getOrderItemsList(); for(OrderItem orderItem : orderItemList) { //購入時単価 * 買った個数をもとめて、合計に加算 total += ( orderItem.getPrice() * orderItem.getQuantity() ); } //Orderに改めて注文時点の単価をセット orderBean.setTotal(total); orderBeanList.add(orderBean); } // 注文情報リストをViewへ渡す model.addAttribute("pages", orderList); model.addAttribute("orders", orderBeanList); model.addAttribute("url", "/order/list"); return "order/list/order_list"; }
**リポジトリ** package jp.co.sss.shop.repository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import jp.co.sss.shop.entity.Order; import jp.co.sss.shop.util.JPQLConstant; /** * ordersテーブル用リポジトリ * * @author System Shared */ @Repository public interface OrderRepository extends JpaRepository<Order, Integer> { Order findTop1ByOrderByInsertDateDesc(); // 会員IDに該当する注文情報を注文日付順で検索 Page<Order> findByUserIdOrderByInsertDateDesc(int userId, Pageable pageable);
**ログイン** package jp.co.sss.shop.validator; import javax.servlet.http.HttpSession; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapperImpl; import org.springframework.beans.factory.annotation.Autowired; import jp.co.sss.shop.annotation.LoginCheck; import jp.co.sss.shop.bean.UserBean; import jp.co.sss.shop.entity.User; import jp.co.sss.shop.repository.UserRepository; import jp.co.sss.shop.util.Constant; /** * ログインチェックの独自検証クラス * * @author System Shared */ public class LoginValidator implements ConstraintValidator<LoginCheck, Object> { private String email; private String password; @Autowired UserRepository userRepository; @Autowired HttpSession session; @Override public void initialize(LoginCheck annotation) { this.email = annotation.fieldEmail(); this.password = annotation.fieldPassword(); } @Override public boolean isValid(Object value, ConstraintValidatorContext context) { BeanWrapper beanWrapper = new BeanWrapperImpl(value); String email = (String) beanWrapper.getPropertyValue(this.email); String password = (String) beanWrapper.getPropertyValue(this.password); User user = userRepository.findByEmailAndDeleteFlag(email, Constant.NOT_DELETED); if (user != null && password.equals(user.getPassword())) { UserBean userBean = new UserBean(); userBean.setId(user.getId()); userBean.setName(user.getName()); userBean.setAuthority(user.getAuthority()); // セッションスコープにログインしたユーザの情報を登録 session.setAttribute("user", userBean); return true; } else { return false; } } }

エラー内容

コントローラーのidが2つとも(idを変数に解決できません)というエラーが出る状態です。
またゴール地点としては
セッションに登録されたidの情報のみ取ってくる事ができたらと思っています。
説明下手ですみません。また現状のコードの書き方の違いや違和感などありましたらご指摘お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/11/14 01:00

コードはマークダウンのcode機能を利用してご提示ください
m.ts10806

2019/11/14 01:01

あと、内部のコードだけでなくできればpackageも含めて全体ご提示ください
satesate

2019/11/14 01:12

すみません。修正致します。
m.ts10806

2019/11/14 01:15

怒っているわけではないので淡々といきましょう。
satesate

2019/11/14 01:24

修正致しました。 サイトを使うのがまだ数回目だったのでご指摘いただき感謝しております。 また不足している点などありましたらご指摘お願いします。
guest

回答1

0

自己解決

質問の仕方が悪かったのですが
Page<Order> orderList = orderRepository.findByUserIdOrderByInsertDateDesc(((UserBean) session.getAttribute("user")).getId(), pageable);
に修正したら無事に動作しました。

投稿2019/11/14 01:33

satesate

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問