セキュリティ制約への対処

sourceSet モデルまたはその子を変更するスクリプトはフォームの証明を無効にするので、フォームは信頼されなくなります。フォームは有効期間中にいつでも認証できるので、フォームの認証後にエラーが発生しないスクリプティングの手法を使用することが重要です。

sourceSet モデルまたはその子を変更するスクリプトを使用する場合は、モデルの代わりにモデルのコピーを使用する必要があります。フォームのコピーを使用すると、スクリプトでデータモデルが変更されても元のフォームでエラーが発生しません。例えば、データベース内のレコードの表示やデータベース内の特定のレコードの選択などの一般的なタスクを実行するフォームでは、sourceSet モデルに含まれるデータ接続ノードを変更する必要があります。

sourceSet モデルをコピーするには、sourceSet モデル内で変更するデータ接続について定義するスクリプトでメソッドを作成し、スクリプトでその定義の代わりにコピーを使用するように指定する必要があります。

データのコンボボックスのスクリプトを次に示します。このスクリプトでは、データソースのデータをリストに入力します。

... 
var oDB = xfa.sourceSet.nodes.item(nIndex); 
... 
// Search node with the class name "command" 
var nDBIndex = 0; 
while(oDB.nodes.item(nDBIndex).className != "command") 
nDBIndex++; 
 
oDB.nodes.item(nDBIndex).query.recordSet.setAttribute("stayBOF", "bofAction"); 
oDB.nodes.item(nDBIndex).query.recordSet.setAttribute("stayEOF", "eofAction");

sourceSet モデルをコピーするには、ステートメントの末尾に clone(1) メソッドを追加して、そのモデルにアクセスする行を変更する必要があります。

    var oDB = xfa.sourceSet.nodes.item(nIndex).clone(1);

注意: コピーしたデータ接続ノードは、変数またはスクリプトのオブジェクトに定義された変数に保存できます。