はじめに
VFとApexで取引先責任者検索画面を作っていたらつまづいたので、まとめます。
↓ 完成検索画面
問題
検索結果レコードが1件も表示されない
原因
レコードを格納するタイミングで、再び初期化(インスタンス化)してしまっており、新しく空のresultsというリストを作っていたため
間違いコード
public class searchPage{
public List<Contact> results { get; set; } //SOQLで取得した取引先責任者
public searchPage() {
// 条件で絞る処理などがここに書いてある。今回は省略
List<Contact> results = Database.query(finalQuery); // ←ここでまた初期化している!!
}
}
こうすると、resultsという箱が2個できてしまい、
表示されない側のresultsに検索結果が入ってしまいます。
解決方法
再初期化してしまっていたコード部分を消す
正しいコード
public class searchPage{
public List<Contact> results { get; set; } //SOQLで取得した取引先責任者
public searchPage() {
// 条件で絞る処理などがここに書いてある。今回は省略
results = Database.query(finalQuery);
// ↑ここで初期化せずに、作っておいたresultsに値を入れる!
}
}
おわりに
とにかく初学者は、インスタンス化の理解をしていることが必要かなと思いました!
時間かかるかもですが、
必要だとなんとなくわかればいいかと思います。
わかりやすいと思ったサイトの参照: