1

3 つのフィールドと 1 つのリッチ テキスト フィールドを持つ単純なドキュメントがあります。3 つの単純な編集ボックス コントロールと 1 つのリッチ テキストを含む xpage もあります。私の NotesXSPDocument の名前は document1 です。

質問 1: xsp ドキュメントのすべてのコントロールを含むベクターを取得できますか? たとえば、... などを使用する代わりに、getComponent("fld1")またはgetComponent("fld2")のようなものを使用できますgetAllComponents()document1.getControls()? これらの方法はもちろん存在しないので、それを行う方法があるかどうか尋ねています。を呼び出すことで、(XSP ではなく) ドキュメントのすべての項目を取得できることを知っていますdocument1.getDocument().getItems()。xspに似たものはありますか?

質問 2: 上記のようにベクトルを取得できるとしましょう。次に、このベクトルを繰り返し処理して各コントロールの値を取得する場合、それがリッチ テキスト フィールドかシンプル テキスト フィールドかを確認する方法はありますか?

4

2 に答える 2

4

技術的には、はい、しかし簡単ではありません。これは、解決したい根本的な問題にアプローチするためのより良い方法がある可能性が高い状況の 1 つです。

それにもかかわらず、ページ上の入力のリストを取得しようとしている場合は、XspQuery が役に立ちます: http://avatar.red-pill.mobi/tim/blog.nsf/d6plinks/TTRY-96R5ZT。これにより、「locateInputs」を使用してページ上のすべての入力のリストを取得し、値メソッドのバインディングをチェックして、文字列バージョンが変数名を参照しているかどうかを確認できます。エラーが発生しやすく、きれいではありませんが、うまくいきます。それらはプロパティ バインディングであるため、そこにある startsWith フィルタが希望どおりに機能するとは思いません。

または、コンポーネントを最初から Java クラス内の何かにバインドすることもできます。私は最近(別の目的で)まさにそのようなことをしており、最初にここで説明しました:https://frostillic.us/f.nsf/posts/my-black-magic-for-the-day . つまり、binding="" プロパティを適切に処理する方法が適切であれば、特定のオブジェクトのプロパティを参照するすべてのコンポーネントのリストを取得できます。

質問の 2 番目の部分については、何らかの方法でコンポーネントのハンドルを取得する場合、「com.ibm.xsp.UIInputRichText のコンポーネント インスタンス」を実行することで、それがリッチ テキスト コントロールであるかどうかを確認できます。

于 2014-09-02T12:31:47.033 に答える
3

少し複雑ですが、はい。facesContext.getViewRoot()UIViewRoot オブジェクトなのでList<UIComponent> getChildren()、子を返すメソッドがあります。

ただし、これはツリー構造であるため、その子の一部には追加の子コンポーネントがあります。見たいコンポーネントのリストを作成するには、ツリー全体をトラバースする必要があります。

タイプについては、クラスによってコンポーネントのタイプを決定できます。たとえば、UIInput はテキスト ボックスなどです。

于 2014-09-02T12:27:43.557 に答える