ajax - JSF 2.0 : Re-rendering/updating a single item in ui:repeat using AJAX

标签 ajax jsf jsf-2 repeat

我的页面由几个区域组成,这些区域是通过使用 <ui:repeat> 迭代项目列表而创建的。 .想象一下这个简化的例子:

<h:form id="form">    
    <ui:repeat id="repeatContainer" var="item" value="#{testBean.items}" varStatus="status">
        <h:outputText value="#{item.title}: "/>

        <!-- I want to re-render only a single one of these fields -->
        <h:outputText id="valueContainer" value="#{item.value}"/><br/>          
    </ui:repeat>
</h:form>

现在,我想重新渲染(仅)valueContainer特定元素 在此列表中 使用 AJAX (例如,索引为 1 的元素)。我已经尝试了所有这些组合,但没有任何运气:
<!-- Works, but renders all items: -->
<f:ajax render=":form"/>

<!-- This is what I actually want to achieve (does not work, comp. not found): -->
<f:ajax render=":form:repeatContainer:1:valueContainer"/>

<!-- Does not work (component not found): -->
<f:ajax render=":form:repeatContainer"/>

<!-- Does not work (component not found): -->
<f:ajax render=":form:repeatContainer:1"/>

<!-- Does not work (component not found): -->
<f:ajax render=":form:1"/>

<!-- Does not work (component not found): -->
<f:ajax render=":form:1:valueContainer"/>

<!-- Does not work (no error message, but does nothing): -->
<f:ajax render=":form:repeatContainer:valueContainer"/>

我的要求包括:
  • 我需要确定组件
    使用 重新渲染绝对标识符
    路径
    ,因为按钮
    触发更新在某处
    在组件上完全不同
    树。
  • 重新渲染整个页面或
    表单(使用 @all/@form )是
    对我没用,因为那种
    质疑我为什么使用 JSF/AJAX
    根本...
  • 我需要用 PrimeFaces <p:dataGrid> 实现同样的目标单元格(即仅更新特定单元格的特定子组件),但我认为这会减少到相同的问题。

  • 我想必须有一个简单的解决方案,我目前正在忽视这个问题?!

    最佳答案

    这似乎是由 Mojarra 2.0.2 中的两个单独的错误引起的。以下线程讨论了一个相关问题:
    How to refer to dataTable parent within the dataTable?

    就我而言,我使用的是 PrimeFaces <p:dataGrid>而不是 <h:dataTable> ,但它似乎患有相同的症状。引用只是失败。我想这与 UIComponent#findComponent() 中的错误有关或 JSF 实现的底层方法。

    看起来目前这个问题没有解决方案......除了等待 JSF 实现被修复......如果其他人有进一步的建议,请随时添加它们。

    关于ajax - JSF 2.0 : Re-rendering/updating a single item in ui:repeat using AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4660130/

    相关文章:

    javascript - 如何使用ajax从服务器接收回数据?

    java - 如何在目的地中使用字符串?

    jsf - 在 <p :commandLink> 中传递参数

    java - 该模块尚未部署[netbeans+glassfish]

    jsf - 如何处理 JSF 2 中的 session 过期和 ViewExpiredException?

    java - 使用 Jackson Framework 进行 @RequestBody 注释的 Spring Boot ObjectMapper

    javascript - 当我清除选项时,选择 onChange 不再起作用

    java - AJAX4JSF/AjaxStateHolder | AJAX4JSF/AjaxStateHolder | AJAX4JSF/AjaxStateHolder session 内存泄漏

    jsf - 无法在 jsf 中获取 servletcontext 路径

    javascript - $ 未在 javascript 中定义 ajax 请求