【问题标题】:AJAX delay on richfaces tree selectionRichfaces树选择的AJAX延迟
【发布时间】:2011-07-01 11:06:13
【问题描述】:

我有一个使用 Richfaces 4 树控件的 JSF 2 应用程序。树设置为使用“AJAX”开关类型。在每次选择时,都会对服务器进行 AJAX 调用以更新树的支持 bean 的选择值。

单击节点时,单击与显示为选中的节点之间存在延迟。文档确实说明使用这种方法可能会导致轻微的延迟,但我想知道为什么它不只是在发出 AJAX 请求之前更新节点的样式,以便不离开用户想知道点击是否已注册。

我一直在尝试找出一种方法来更新 javascript onclick 事件上的节点,但我没有看到我必须更改的跨度上的 id。有没有其他人尝试过类似的东西?我是否必须找到父 div 并工作到第二个跨度?肯定有更好的方法吗?

请注意,不能选择使用“客户端”开关类型,因为我们需要能够动态查询子节点。在这种情况下,一次性构建整个树是不切实际的,因此它必须是“服务器”或“Ajax”。

【问题讨论】:

    标签: java ajax jsf richfaces


    【解决方案1】:

    回答我自己的问题 - 并与我的“无客户端切换”规定有点矛盾。

    由于我们使用的是 RichFaces 4,我可以指定树节点扩展应该使用 ajax(允许树“懒惰地”填充),并且选择应该只在客户端进行。但是,我们仍然需要将当前选择状态存储在树的支持 bean 中。为此,我在页面中添加了一个 a4j:jsfunction ...

    <a4j:jsFunction name="onSelection">
        <a4j:param name="param1" assignTo="#{treeBean.selectedNodeID}"  />    
    </a4j:jsFunction>
    

    ...并从每个树节点上的“onmousedown”事件中调用它...

    onmousedown="onSelection('#{node.id}')"
    

    这样,树在视觉上更新而无需等待 ajax 请求完成,并且对用户来说感觉更快捷。

    唯一的问题似乎是在单击切换时也会触发 onmousedown 事件,因此扩展节点会导致它被“选中”而不更新其样式。不幸的是,“onselected”似乎没有在当前的里程碑版本中实现。

    【讨论】:

      猜你喜欢
      • 2012-09-17
      • 2015-09-10
      • 2019-10-26
      • 2011-05-09
      • 2021-12-02
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多