tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:DML currently not allowed

apex:componentを作成してDML処理を実行したところ次のエラーが発生しました。

f:id:tyoshikawa1106:20130402230621j:plain


allowDML="true"の記載をしていないことが原因でした。
allowDMLはComponent内でDML処理を実行する権限を与えるか指定するためのものです。
デフォルトでは、falseとなり権限なしの状態となります。


Component内でDML処理を実行するときは、以下のようにTrueで指定する必要があるみたいです。

<apex:component Controller="SampleController" allowDML="true">


DML currently not allowed のエラーは下記条件で発生するとのことです。

  • AllowDML= trueにすることなくコンポーネントでDMLを試みる
  • コントローラのコンストラクタでDMLを試みる
  • コントローラ内のgetメソッドでDMLを試みる

参考サイト

Solution for DML currently not allowed

http://goo.gl/Jrtb7