rempei
@rempei

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Play fetch()で渡した値がnullになってしまう

解決したいこと

const url = '/detail/' + selectedName ;

fetch(url) .....

のような感じでfetch()を使おうとしたとき
ルーティング設定を
GET   /detail/{selectedName}      Edit.detail

コントローラーメソッドは

 public static void detail(String name) {
    User selectedName = User.find("name = ?", name).first();
  System.out.println("クリックした名前: " + name);
    Gson gson = new Gson();
    String json = gson.toJson(selectedName);
    renderJSON(json);
  }

このように書くとselectedNameの値がdetailの引数に渡され、その引数をもとにdata.ymlで検索をかけてselectedNameを取得し、renderJSON()でレンダリングするという風に習ったのですがあっているでしょうか?

引数に渡されたはずのnameがnullになってしまいます。
分かる方がいらっしゃいましたら教えてほしいです。

0

2Answer

Comments

  1. @rempei

    Questioner

    ご回答ありがとうございます。
    :を使うというのはうまくいかなかったのですが
    コントローラーメソッドの引数名とルーティングのパラメータ名を合わせると
    うまく渡せたみたいで値が正しく表示されました。
    ありがとうございました!

見たところ、fetch()を使用してフロントエンドからサーバーサイドのメソッドにnameパラメータが正しく渡されていない可能性があります。フロントエンドのコードを詳しく調べ、selectedNameの値が適切にサーバーに送信されるように確認しましょう。

まず、fetchリクエストを行う前に、selectedNameが有効な値を持っていることを確認してください。これは、コンソールにログを出力するか、debuggerを使用して実行を一時停止し、ブラウザの開発者ツールで値を確認することでできます。

以下のようにフロントエンドのコードを修正し、fetchリクエストのエラーハンドリングを追加します:

const selectedName = '...'; // selectedNameの値を適切に設定してください

const url = '/detail/' + selectedName;

fetch(url)
  .then(response => response.json())
  .then(data => {
    console.log(data); // データが正しく受信されているかを確認
    // サーバーから受け取ったデータを必要に応じて処理
  })
  .catch(error => {
    console.error('データの取得中にエラーが発生しました:', error);
    // エラーの処理はここで行う
  });

fetch()を呼び出す前にselectedNameが正しい値に設定されていることを確認し、問題が解決しない場合はお知らせください。引き続き問題を調査いたします。

1Like

Comments

  1. @rempei

    Questioner

    ご回答ありがとうございます。
    selectedNameが正しいことは確認済みでした。
    @hokutohさんの
    コントローラーメソッドの引数名とルーティングのパラメータ名を合わせる
    という方法で解決しました。
    ありがとうございました。

Your answer might help someone💌