栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何解决循环命名容器中的组件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何解决循环命名容器中的组件

在指定的客户端ID

<f:ajax>
必须是可用 两个 由JSF的服务器端

facesContext.getViewRoot().findComponent(clientId);

(以便可以找到它以便为ajax响应呈现其新的HTML表示形式)

在客户端通过Javascript的

document.getElementById(clientId);

(以便一旦具有新HTML内容的ajax响应到达,它就可以由JS更新/替换)

由于

<ui:repeat>
仅在视图渲染期间运行,因此具有行索引的客户端ID在服务器端不表示有效的组件(错误消息来自“无法找到组件…”
findComponent()
,但在客户端中却表示有效的HTML元素)
。基本上,您将需要客户端ID,而服务器端没有行索引,客户端ID需要有行索引。但这只是行不通的,
<ui:repeat>
因为(不幸的)无法单独选择特定迭代回合的组件树状态
findComponent()


在使用JSTL

<c:forEach>
并在视图构建期间运行时动态分配组件ID
时,它应该工作正常,并且实际上在视图树中生成了多个有价值的JSF组件,而不是仅在渲染过程中多次重复使用一个组件。

<c:forEach varStatus="loop">    <my:compositeComponent id="myCC">        <h:panelGroup id="container_#{loop.index}"> Some content here (outputText, etc.) <ui:repeat id="innerlist_#{loop.index}">    <h:commandButton>        <f:ajax render=":#{cc.clientId}:container_#{loop.index}" />

但是,这有其自身的含义,当然,当与复合组件一起使用以及在嵌套循环中使用时也是如此。您的代码不够完整,无法提供有关此方面的见识和建议。例如,将这段代码放在复合组件中会中断,该组件本身也会在渲染时间循环中多次重复使用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436945.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号