2011-01-20 38 views
1

私は、(より大きいシステムの一部として)ユーザーがメッセージを投稿できる機能を実装しようとしています。ユーザーがポストボタンをクリックすると、RichFacesとa4jを使用してajaxを使用して生成されたポストを取得します。a4j:repeat - 新しい要素を動的に追加する

私は、応答が返されると自動的に投稿が表示されないようにしたいと思います。むしろ、私は隠しdivの中に出力パネルを追加したいと思います。ユーザーがポストボタンをクリックすると、その出力パネルにはポピュレートされますが、明らかにユーザーから隠されます。

私が後でやりたいことは、隠しdivの新しい要素をjQueryを使って正しい位置に移動することです。

とにかく、ここでの問題は、a4j:repeatのajaxKeysプロパティを使用して、アクションが実行されたときに1つの行を更新することです。たとえば、誰かが行の評価5を与える場合、私はその行だけを再レンダリングしたい(サーバー側で正しいキーを設定することによって)。

私がこのメソッドを使用すると、他のポスト以外のajaxで作成された要素を移動させても、最初は問題なく動作しますが、ユーザーがその行に対して操作を行うと、a4j:repeatはそれ自体が生成されなかったことを考えれば、それを使って作業してください。

これは間違いありませんか?もしそうなら、誰かが提案できる回避策がありますか?

Facebookは同様のことを達成することができます。投稿を作成または削除したり、投稿にコメントしたりして、そのオブジェクトのみを更新することができます。私はa4j:repeatがこの問題に近づく最善の方法ではないかもしれないと思っています。思考?

+0

あなたは本当にa4j:repeatがあなたをここで助けてくれるとは思わない理由を説明しませんでした。なぜそれは機能しませんか? –

+0

repeatは、テーブル全体を更新せずに新しい要素を追加することはできません。 – NRaf

答えて

2

私は以前も同様の問題を抱えていました。私は試してみましたが、それを動作させることができませんでした。

最終的に私は何が起こっていたのかをより詳細に制御できるjavascriptとSeam Remotingを使用することに決めました。私はそれをそのアプローチで動作させることができました。

+0

どうやってそれを見つけましたか? Seam Remotingに関する私の懸念は、すべてがクライアント側で行われているため、返送されるデータ量が増加する可能性があるということです。それでも、私はその道を進む必要があるようになってきています。 – NRaf

+0

私が達成しようとしていたことは大丈夫になりました。あなたは手作業をもう少ししなくてはなりませんが、少なくともRichFacesの魔法を削除することで、何が起こっているのかをたくさんコントロールできます:) クライアントにたくさん送る必要はありません、新しいコメントだけ?会話スコープを使用できるので、すべてを前後に送信する必要はありません。私はここで何かを見逃しているかもしれませんが、なぜあなたはすべてをサーバーに再度送る必要があるのか​​分かりません。 – Tiago

関連する問題