tqwko_05
@tqwko_05

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Javaのgetter/setterでURLからパラメータを取得

処理内容

Formクラスのデフォルトコンストラクタを実行した際に、URLに記載のパラメータからIDを見つけてsetし、Actionクラスでgetされる処理が記載されている
(他にもURLパラメータに設定されているIDはありますが簡潔にするためにひとつとしています)
URLの例)http://hoge.jp/?id=1234

分からない点

・処理の概要は分かりますが、setterが動くときに「URLのパラメータから”1234”が取得するロジック」が理解できず困っています。(デバッグでsetIdを通った時に"1234"が既に入っていることは確認済)
・setterの呼び出し箇所を検索しても呼び出し箇所が見つからないのにデバッグで通るにはなぜ?
・フレームワークや画面描画に使用するJSPでそのような機能があるのでしょうか…?

Java初心者でおかしなことを言っている、または不明瞭な点があればご指摘ご教示いただければと思います。
よろしくお願いいたします。

メインのActionクラス
    /** アクションForm */
    private IdListForm form = new IdListForm();
    /** 画面Dto */
    private IdListDto IdListDto = new IdListDto();
    
    /**
     * 初期表示
     * 
     * @return 実行結果
     * @throws ApplicationException 例外
     */
    @RequestMapping(value={"/Hoge.action"})
	@AuthAnnotation(need = false)
    //画面初期表示処理
  ~省略
  // IDから各情報を取得
    this.IdListDto.id = this.form.getId();

Formクラス
    /**
     * IDを取得する
     * 
     * @return ID
     */
    public String getId() {
        return id;
    }

    /**
     * IDを設定する
     * 
     * @param ID
     */
    public void setId(String id) {
        this.id = id;
    }
0

2Answer

フレームワークは何を使っているのでしょうか。

フレームワークや画面描画に使用するJSPでそのような機能があるのでしょうか…?

フレームワークが書かれていないので何とも言えないのですが、いずれにせよ、
URLパラメータのid(id=1234)と、Formクラスのidフィールドをひもづけるコードか設定がどこかにあるはずなので、もう一度ソースコードを見直すか、そのような設定ファイルがないか探してみるとよいと思います。

1Like

Comments

  1. @tqwko_05

    Questioner

    肝心なところを記載しておらず申し訳ありません。。
    MainクラスはSpring bootを使用しており、Formクラスはimport箇所に「ibs.framework」という記載があったためIBSというフレームワークかと思います。
    (@getterという記載がなく直にgetter,setterメソッドが記載してあるため少なくともSpring bootではないです)
  2. @RequestMapping(value={"/Hoge.action"})
    @AuthAnnotation(need = false)

    の下に、メソッド定義があるはずですが、それも記載してください。
    そこでデータを自動的にバインドしているのだと思われます。

どこを探しても直接setIdを呼び出している箇所は見つからないと思います。
Javaの多くのフレームワークはリフレクションを使って処理しています。
リフレクションは動的にメソッド等を呼び出す仕組みです。
詳細についてはWeb上に多くの情報があるので検索してみてください。

1Like

Your answer might help someone💌