質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.37%
Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

Visualforce

Visualforceは、Force.comプラットフォームの機能の一つ。Salesforceのアプリケーションにネイティブにホストできるカスタムユーザインターフェースの作成が可能になります。

Apex

Apexは、Salesforce上で動作するアプリケーション作成をサポートするアプリケーション開発プラットフォーム。プログラミング言語であるApexコードと、独自のApex WebサービスAPIなどで構成されています。

Q&A

1回答

337閲覧

Apex「不明なメソッド「TestController.makeMove()」」のエラー解消方法が分からない

zero-

総合スコア5

Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

Visualforce

Visualforceは、Force.comプラットフォームの機能の一つ。Salesforceのアプリケーションにネイティブにホストできるカスタムユーザインターフェースの作成が可能になります。

Apex

Apexは、Salesforce上で動作するアプリケーション作成をサポートするアプリケーション開発プラットフォーム。プログラミング言語であるApexコードと、独自のApex WebサービスAPIなどで構成されています。

0グッド

0クリップ

投稿2024/05/30 02:56

編集2024/05/30 04:32

実現したいこと

Apexでオセロアプリのコードを書いています。

現在の実装状況として、初期配置された8x8のボードを表示させることができました。しかし、次にコマの置き方とひっくり返しのルールを実装する途中でエラーが発生し、その解消方法が分からず困っています。エラーの解消方法をご教示いただけないでしょうか。

発生している問題・分からないこと

Visualforceファイルを表示させると以下のエラーメッセージが表示されます

  • 「不明なメソッド「TestController.makeMove()」」

このエラーはTestControllerクラスのmakeMove()メソッドが見つからないことが原因と考えました。しかし、コードにはmakeMove()メソッドが含まれています。

この場合のエラー原因と解消方法をご教示お願いできますでしょうか。

該当のソースコード

TestController.cls

1public class TestController { 2 public List<List<Integer>> board { get; set; } 3 private ReversiBoard reversiBoard; 4 5 public TestController() { 6 reversiBoard = new ReversiBoard(); 7 loadBoard(); 8 } 9 10 private void loadBoard() { 11 board = new List<List<Integer>>(); 12 for (List<CellWrapper> row : reversiBoard.board) { 13 List<Integer> intRow = new List<Integer>(); 14 for (CellWrapper cell : row) { 15 intRow.add(cell.value); 16 } 17 board.add(intRow); 18 } 19 } 20 21 public void makeMove(Integer x, Integer y) { 22 reversiBoard.setCell(x, y, 1); 23 loadBoard(); 24 } 25 26 public List<List<Integer>> getBoardState() { 27 return board; 28 } 29}

Revers.vfp

1<apex:page controller="TestController" lightningStylesheets="true"> 2 <apex:form > 3 <apex:pageBlock title="オセロ"> 4 <apex:outputPanel id="gameBoard"> 5 <apex:repeat value="{!board}" var="row" indexVar="i"> 6 <apex:repeat value="{!row}" var="cell" indexVar="j"> 7 <apex:commandButton value="{!cell}" action="{!makeMove}" rerender="gameBoard"> 8 <apex:param name="x" value="{!i}" assignTo="{!x}"/> 9 <apex:param name="y" value="{!j}" assignTo="{!y}"/> 10 </apex:commandButton> 11 </apex:repeat> 12 <br/> 13 </apex:repeat> 14 </apex:outputPanel> 15 <apex:commandButton value="Start Game" action="{!startGame}" rerender="gameBoard"/> 16 </apex:pageBlock> 17 </apex:form> 18</apex:page>

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

TestControllerクラスのmakeMove()メソッドにデバッグを仕込みましたが、デバックログに表示されませんでした。

補足

特になし

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

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

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

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

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

guest

回答1

0

不明なメソッド「TestController.makeMove()」と表示されているのでメソッドの引数を削除してみたらいかがでしょうか?
引数の数の差異により、別のメソッドとして扱われることによりエラーが発生していると思われます。

// x,yのゲッター、セッター public Integer x { get; set; }; public Integer y { get; set; }; public void makeMove() { reversiBoard.setCell(x, y, 1); loadBoard(); }

投稿2024/05/30 08:42

lovam-nm

総合スコア18

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問