apex:componentを作成してDML処理を実行したところ次のエラーが発生しました。
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