0

Dialog list文字列のリストをJava エージェントでに追加したいと考えています。アイテムの値は変更されますが、フォームに値が表示されません。

Session session = getSession(); 
AgentContext agentContext = session.getAgentContext();
Database db=session.getCurrentDatabase();
Form form = db.getForm("UOs_AD");
Document document = agentContext.getDocumentContext();
Item item = document.getFirstItem("UO_AD");
Vector v = new Vector();
v.addElement("Bicycle");
v.addElement("Train");
v.addElement("Foot");
Item textListItem = document.replaceItemValue("UO_AD", null);
textListItem.setValues(v);
textListItem.setSummary(true);
document.save(true, true);
4

3 に答える 3

2

あなたの質問を理解しているかどうかわかりません。フォームを更新して、誰かがドキュメントを作成または編集するたびにダイアログ リストで「自転車」、「電車」、および「徒歩」が選択されるようにしようとしていますか? または、これらの 3 つの値がフィールド値として選択されるように、特定のドキュメントを更新しようとしていますか? あなたのコードはドキュメントを更新しているようです。

これら 3 つの値を選択済みとして表示したいだけの場合は、Domino Designer でフィールドの [リストにない値を許可する] プロパティが選択されていることを確認してください。また、「複数の値を許可する」プロパティが選択されていることを確認してください。

于 2013-08-30T14:33:31.813 に答える
1

replaceItemValue()は、現在のドキュメント ( で取得したもの) のフィールドの値のみを置き換えますagentContext.getDocumentContext()。たとえば、そのフィールドに関連付けられたコンボボックスがユーザーに提供する選択肢は置き換えません。

コンボボックスが提供する選択肢が静的である場合は、Domino Designer を使用して文書の基になっているフォームを開き、そのフィールドの選択肢に提供される値を変更する必要があります。プログラムでそれを行いたい場合は、DXLを使用する必要があります。

于 2013-08-30T14:26:58.100 に答える
0

わかりました。あなたの最新のフィードバックに基づくと、あなたの質問は次のようになるはずでした:

LDAP クエリの結果 (私の場合は OU のリスト) を Java コードで処理して、IBM Notes ダイアログ リストに表示するにはどうすればよいですか?

「従来の」Domino Designer ではうまくいきません。クラシック ノート フォームでは、ダイアログ リストの次のオプションのみが提供されます (デザイナまたは DXL を介して) 。

  • 選択肢を入力 (1 行に 1 つ): 編集ボックスに選択肢のリストを入力します。
  • 選択肢に式を使用する:式ウィンドウにLotus Notes の式を入力して、選択肢のリストを生成します。
  • [アドレス] ダイアログを使用して選択する: このオプションを選択すると、[名前] ダイアログ ボックスが表示され、ユーザーは個人アドレス帳または Domino ディレクトリから名前を選択できます。
  • 選択肢にアクセス制御リストを使用する: このオプションは、データベースのアクセス制御リストにある人、サーバー、グループ、および役割のリストを表示します。
  • 選択にビュー ダイアログを使用: このオプションは、ビューの列からのエントリを含むダイアログ ボックスを表示します。

そのため、一部の Java コードの出力をダイアログ リストに追加する方法はありません。

あなたができることは次のとおりです。

  1. XPage を使用します。XPages を使用すると、Java コードを使用して、あらゆる種類のリスト、ダイアログ ボックスなどを埋めることができます。
  2. スケジュールされた Notes Agent で Java コードを使用して、Notes ドキュメントを作成することにより、LDAP エントリを Notes データベースに「同期」します。LDAP エントリを表す「OU」。ビューを使用すると、ダイアログ リストの [選択にビュー ダイアログを使用] オプションを使用して、それらをユーザーに表示できます。
  3. TDI (これに対する権利は Domino に付属しています) を使用して、Notes ドキュメントを作成することにより、LDAP エントリを Notes データベースに同期します。LDAP エントリを表す「OU」。ビューを使用すると、ダイアログ リストの [選択にビュー ダイアログを使用] オプションを使用して、それらをユーザーに表示できます。
  4. スケジュールされた Notes Agent で Java コードを使用して、プロファイル文書内のフィールドを「OU」のリストで更新します。次に、@ 式を使用して、ダイアログ リストに値を表示します。

ソリューション (2)、(3)、および (4) には、LDAP ディレクトリの「リアルタイム」情報が表示されないという欠点があります。

あなたの問題を正しく理解できたと思います。その場合は、それに応じて質問の内容とタイトルを編集してください。

于 2013-09-02T13:55:23.507 に答える