【问题标题】:a4j:repeat - Dynamically appending a new elementa4j:repeat - 动态添加一个新元素
【发布时间】:2011-06-12 19:15:05
【问题描述】:

我正在尝试实现(作为更大系统的一部分)用户能够发布消息的功能。当用户单击帖子按钮时,我使用 RichFaces 和 a4j 来检索使用 ajax 生成的帖子。

我不希望在返回响应后立即自动显示帖子。相反,我想在隐藏的 div 中添加一个输出面板。当用户点击发布按钮时,该输出面板将被填充,但显然对用户隐藏。

之后我想做的是使用 jQuery 将新元素从隐藏的 div 移动到正确的位置。

无论如何,这里的问题是我正在使用 a4j:repeat 的 ajaxKeys 属性来更新单行,当对它执行操作时。例如,如果有人给该行评分 5,我只想重新渲染该行(通过在服务器端设置正确的键)。

如果我使用这种方法,虽然将 ajax 创建的元素移动到其他帖子旁边最初会正常工作,但如果用户对该行采取行动,我不相信 a4j:repeat 将能够工作考虑到它不是自己生成的。

这是正确的吗?如果是这样,是否有任何人可以建议的解决方法?

Facebook 也能做到类似的事情。您可以创建或删除帖子以及对帖子发表评论,并且只更新该对象。我开始认为 a4j:repeat 可能不是解决这个问题的最佳方法。想法?

【问题讨论】:

  • 你真的没有解释为什么你不认为 a4j:repeat 在这里帮助你。为什么它不起作用?
  • repeat 不允许我在不刷新整个表格的情况下添加任何新元素。

标签: jquery richfaces seam ajax4jsf rerender


【解决方案1】:

前段时间我也遇到过类似的问题。我试过了,但无法让它工作。

最终我决定使用 javascript 和 Seam Remoting,这让我可以更好地控制正在发生的事情。我设法使它与这种方法一起工作。

【讨论】:

  • 你是怎么找到它的?我对 Seam Remoting 的担忧是它可能会增加发回的数据量,因为一切都发生在客户端。尽管如此,它看起来越来越像我将不得不走这条路。
  • 我努力实现的目标还算顺利。您将不得不做更多的手动工作,但至少您将通过从方式中移除 RichFaces 魔法来获得对发生的事情的很多控制 :) 您不需要向客户端发送很多内容,只需新评论没有?您仍然可以使用对话范围,因此无需来回发送所有内容。我可能在这里遗漏了一些东西,但我不明白你为什么需要再次将所有内容发送到服务器。
猜你喜欢
  • 1970-01-01
  • 2015-07-10
  • 2013-06-06
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
相关资源
最近更新 更多