0

カスタム コントロールで動的フィールド バインディングを使用しています。

フィールド バインディングは次のように作成されます。

  • XPage (データソース「ドキュメント」はここに配置されます)
    • カスタム コントロール (渡された文字列) (エラーがある場合に取得するため)
      • 繰り返し (CompositeData は、行、列の文字列を返す Bean に渡されます)
        • 繰り返し (列に使用される 1 つの変数を繰り返します)
          • カスタム コントロール (フィールド名が渡されます)

フィールドバインディングは #{document[compositeData.fieldName]}のように行われます

問題は、XPage を保存すると、メッセージ コントロールでエラーが発生することです。

ドキュメントは別のユーザーによって保存されました - 保存は、変更されたドキュメントへの応答として新しいドキュメントを作成しました。

そして、すべてのフィールドがクリアされます。

これをデバッグする方法はありますか、それとも何か不足していますか?

4

4 に答える 4

1

役立つかどうかはわかりませんが、ドキュメントデータソースとフィールド名の両方をパラメーターとしてDynamicFieldコントロールに渡し、次のように使用します。

compositeData.dataSource[compositeData.fieldName]

データソースのタイプはcom.ibm.xsp.model.DataSourceであり、データソースの下にdataInterfaceとしてリストされています。

于 2013-02-18T17:40:08.737 に答える
1

「ドキュメントは別のユーザーによって保存されました」というエラーは氷山の一角にすぎません。バインドされたフィールドを繰り返し、repeatControls プロパティが false に設定されているという、本当に奇妙な問題がいくつかあります。xpages ライフサイクルのデコード部分はそれを適切に処理できません。コントロールはデータを失います。Martin が提案するように、repeatControls を true に設定して使用する必要があります。

「繰り返し制御変数が存在しません」は、繰り返しを削除するプロパティが true に設定されていることが原因である可能性があります。これを false に変更するか、繰り返される値を保持する追加のデータ コンテキストを追加することで、これを解決できます。

最後に、これに追加/削除機能を持たせるために、動的コンテンツ コントロールと show(null) ハックを使用して、繰り返しコンテンツを再構築できます。

この複雑さをより適切に管理するには、ドキュメント データ ソースの使用をやめて、マネージド Bean の作成を開始することをお勧めします。

あなたが私の提案に従えば、私はあなたが探している機能を手に入れることを保証します.

于 2013-02-18T09:30:57.610 に答える
0

XPage (およびカスタム コントロール) でデータソースが複数回定義されているようです。それまたは保存ボタンには save="true" がありますが、コードはドキュメントのバックエンドを保存するか、複数の場所のコードが同じドキュメントを保存します。データソースをカスタム コントロールに渡すのと同じ方法を使用しましたが、それは単にブログで見たことが原因である可能性があります。

于 2013-02-18T19:36:10.960 に答える
0

繰り返しコントロールに repeatControls="true" を設定していますか?

于 2013-02-17T20:38:33.270 に答える