問題点

CQ のダイアログボックスでフォームフィールドに同時入力をしようとします。例えば、次のように、dialog.any の select コンポーネントを設定して選択ボックスを定義します。

... /Type "AtomLine" /Sub { /mySelectAtom { /Type "Select" /Option { /option0 { /value "red" /text "Scarlet" } /option1 { /value "green" /text "Lime" } /option2 { /value "blue" /text "Azure" } } } } ... 

解決策

上記の例では、dialog.any の select オプションをすべてハードコード化します。ただし、これらのオプションを外部リソースとして定義および管理したり、ダイアログに同時に入力したりすることができます。

CFC コンポーネントをプログラムで描画するスクリプトを指定するには、「Select」ではなく、in dialog.any の OwnerDraw タイプを使用します。スクリプトでは、外部リソースから値を取得し、ダイアログに値を入力できます。したがって、OwnerDraw 使用の選択例を変更するには、次の操作を行います。

  1. dialog.any to call a custom script を draw the form field via OwnerDraw type ... /Type "AtomLine" /Sub { /mySelectAtom { /Type "OwnerDraw" /file "/apps/[yourApp]/components/dynamicDialogComponent/dynamicSelect.esp" } } ... に変更する。
  2. 外部リソースにアクセスし、すべてのオプションで java.util.Map を返す Java クラスを定義します。public class DialogValues { public static Map getSelectOptions(String atomName) { Map optionsMap = new LinkedHashMap(); // get select options and put them in a map // ... return optionsMap; } }
  3. Java クラスを呼び出し、in java.util.Map.に返されたオプションを使用した CFC 選択オブジェクトをレンダリングする /apps/[yourApp]/components/dynamicDialogComponent/dynamicSelect.esp を定義します。dynamicSelect.esp に下記コードを配置します。

この例では CFC.Controls.Select を使用しています。ただし、他の CFC オブジェクトと同じ OwnerDraw アプローチを使用できます。実際、OwnerDraw を使用して.any notation を使用して定義できないダイアログのセクションを描画できます。

CFC スクリプティングオブジェクトは Communiqué 4.x と配信される cfclib.pdf の、及びインスタンスのヘルプシステム http://docs.day.com に記載されています。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー