0

奇妙な問題があります。

データソースがビューであるリピートコントロールを備えたXPageがあります。このビューには、カテゴリ名によるフィルタがあります。XPageには、次のスクリプトを含むボタンがあります。

doc = session.getCurrentDatabase().createDocument();            
doc.replaceItemValue("form", "myForm");
doc.replaceItemValue("docId", "myID");
doc.save();

ボタンはリピータコントロールを部分的に更新しますが、ボタンを最初にクリックしたとき(XPageを開いた後)は常にリピーターを更新しません。ボタンを2回クリックすると、2つの新しいドキュメントが表示されます。

ビューからドキュメントを削除しても同じ問題が発生しますが、この場合、次のエラーメッセージが表示されます。

javax.faces.el.PropertyNotFoundException: Error testing property 'label' in bean of type null
Error testing property 'label' in bean of type null

リピートコントロールをリロードする方法は(エラーなしで)より良くなりますか?

4

1 に答える 1

2

問題は、バックエンドでドキュメントを作成しているため、ランタイムが新しいドキュメントが作成されたことを認識しないことです。したがって、更新に追加される前に、インデクサーがドキュメントをビューに追加することに依存します。これは通常、わずかな遅延の後に発生します。そのため、次の更新後に2つのドキュメントが表示されます。私が過去にそれを解決した方法は、確かに少しハックタスティックですが、300〜500ミリ秒の遅延でsetTimeout()を使用して更新を実行することです。

お役に立てれば。

于 2012-05-09T16:10:11.863 に答える