我有这样的:
<a4j:repeat value="#{results}" var="hdr" rowKeyVar="idx">
<rich:dataTable var="item" value="#{results}" id="tbl#{idx}" first="#{idx}" rows="1">
<a4j:commandButton value="update this table only" reRender="tbl#{idx}" />
</rich:dataTable>
</a4j:repeat>
当我从输出 html 检查时,数据表的 id 类似于 form:0:tbl,最后没有 idx。
当结果中只有一行时,重新渲染将起作用。
所以这里有一些问题:
- 为什么 dataTable 的 id 不能与 EL 表达式一起使用,而“first”属性却很好用?
- reRender 是如何工作的,即使我只是指定了 tbl,它仍然可以被解析,而实际的 HTML id 更长,比如 form:0:tbl?(如果我知道 reRender 是如何工作的,我也许可以破解它来使用 a4j:repeat...)
- 是否有任何技术或解决方法可用于仅刷新 a4j:repeat 中的特定数据表?
事实上,我已经成功地重新渲染了被 s:div 包围的整个 a4j:repeat 块。但是刷新整个块会重置滚动条,所以它是不需要的......