2

ユーザーが入力するときに定期的に保存したいテキストフィールドがあります。既存のRequestFactoryEditorDriverフレームワークにフックしたいのですが、その方法が思いつきません。driver.flush().fire()問題は、すべての呼び出しが戻るのを待ってからedit()再度呼び出す必要があるため、その間、データを編集できないことです。

これまでの私の最善の解決策は、プロキシの上にレイヤー全体を作成することです。保存する直前まで待機してから、プロキシを編集し、変更をコピーして、プロキシを永続化しますが、その時点で、エディターフレームワークの利点のほとんどを失っています。誰かもっと良いアイデアがありますか?

4

2 に答える 2

3

私が信じているもう1つのことは、機能し、おそらくRayの答えよりもはるかに多くの作業(おそらく実際には少ない)を必要としないでしょう:保存したいオブジェクトを編集するのではなく、そのコピー(で作成RequestContext.create())を作成し、あなたの前にコピーを作成します編集してから、起動する前に(別の)Beanにフラッシュしてコピーし直しますRequestContext。ただし、これは、サーバーとの非同期通信のため、同時編集が行われないことを前提としています(ユーザーは編集を続行でき、他の誰かが同じオブジェクトを同時に編集した場合は、「競合」を検出して解決する必要があります)。 。コピーを作成するには、を使用AutoBeanUtils.getAutoBeanしてBeanをRFプロキシから取り出し、次にを使用しAutoBeanVisitorてすべてのプロパティにアクセスし、それらの値を別のプロキシ/オートビーンにコピーします。

于 2011-04-30T13:35:20.243 に答える
1

より低いレベルでこれに取り組むことはそれほど難しいことではないに違いありません。たとえば、RequestFactory自体の周りにラッパーを配置して、すべてのvoidリターンが同期的にコールバックを起動するようにします。これは、99%の確率で実際に成功すると想定しています。

于 2011-02-28T19:00:59.623 に答える