【问题标题】:JSF 2.0 : Multiple ajax responses for a requestJSF 2.0:请求的多个 ajax 响应
【发布时间】:2012-06-04 01:30:10
【问题描述】:

我将有一个可以进行多项选择(复选框)的数据表。我应该触发单个 AJAX 请求作为回报,我应该能够更新每个选择的状态(行)多个 AJAX 响应

如何在 JSF 2.0 中实现这一点?我已经查看了 PrimeFaces、ICEFaces 和 RichFaces,但无法得出使用哪一个来完成此要求的结论。 我是新的 JSF 2.0,任何帮助将不胜感激。

【问题讨论】:

  • 为什么需要多个 ajax 响应?包含所有行(基本上是整个表)的单个 ajax 响应到底有多不足?
  • @BalusC 每个 ajax 响应都针对数据表中的每个选择。每个选择代表(一个设备)将具有应根据事件更新的状态。客户不希望有任何妥协。
  • 是的,我明白那部分。我只是不明白为什么一个 ajax 响应(如标准 JSF JS API 所做的那样)对你来说是不够的。
  • @BalusC 我的问题是如何在单个响应中实现每个选择的状态更改。状态标志有两个阶段。在该过程完成之前,我应该显示每个选择的状态进度。
  • 是的,我明白那部分。我只是不明白为什么单个 ajax 响应(如标准 JSF JS API 所做的那样)对您来说是不够的。为什么它需要在多个响应中而不是在单个响应中返回?

标签: ajax jsf-2


【解决方案1】:

如果您知道所有字段的 ID 都需要更新,那么可以这样做

List<String> renderList = (List<String>)        
FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds();

renderList.add(clientId1);
renderList.add(clientId2);
renderList.add(clientId3);
renderList.add(clientId4);

这里的client id是id和form id的组合,例如:

<h:form id="myBean">
    <h:inputText id="textBox" />
</h:form>

那么客户端 ID 将是:myBean:textBox

那么您在重新渲染列表中添加的所有字段都将在单个 ajax 请求中重新渲染

【讨论】:

  • 这通常在&lt;f:ajax render&gt; 中指定。例如。 &lt;f:ajax render="id1 id2 id3" /&gt;.
  • @BalusC :是的,但唯一的区别在于 f:ajax 标记内的 xhtml 是固定的,而在 java 中您可以动态执行此操作,针对相同 ajax 请求的不同条件/状态的不同渲染跨度>
猜你喜欢
  • 2011-12-09
  • 1970-01-01
  • 2015-05-26
  • 2012-05-18
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多