tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:コンポーネント開発の際に注意すること

f:id:tyoshikawa1106:20140731224455p:plain

コンポーネント開発の注意点についての話です。一つのコンポーネントを同じページ内で複数回呼び出すと同じクラス、同じ変数、同じメソッドの処理がページ内に存在することになります。


それでも通常はインスタンスが別々になるみたいで、apex:commandButtonのaction処理などでは、お互いのクラスに干渉することもなく処理が実行されてくれます。


ただし、actionFunctionを経由してaction処理を実行した場合は困ったことになります。ボタンをクリックするとactionFunctionからApexクラスの処理を実行して入力した値をクリアする機能をつくって確認してみたのですが、commandButtonからの処理では正常に動作したものが、actionFunctionを経由させると、正しく動作せずに2つ目のコンポーネントの変数のみがクリアされてしまいました。


別々のコンポーネントでも同じ名前のJS処理を持っていると干渉してしまうことがあったので、この問題は回避できないんじゃないかと思います。コンポーネントを開発する際には同じページで複数使用を行う必要があるか最初に確認して、必要になる場合はactionFunctionから処理を実行させない方法で対応できるか検討するようにした方が良さそうです。


この現象は次のコードで確認できると思います。