首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭ui内所有展开的行:重复

关闭ui内所有展开的行:重复
EN

Stack Overflow用户
提问于 2012-02-27 22:48:01
回答 1查看 389关注 0票数 1

我有一个用户界面:重复拍卖项目内的表。它是一个常规的html表格,因为当你点击一个竞价commandLink时,就会在所选的拍卖项目下打开一行,并显示一个竞价组件。Bid commandLink使用ajax的方式如下:

代码语言:javascript
复制
<f:ajax listener="#{bean.addBidView(lot)}" render="bidView" />

addBidView正在更新auctionItems的映射,这就是如何打开正确的选定行。当用户再次单击同一个Bid链接时,addBidView会计算出该链接并关闭竞价组件。

现在假设用户单击了几行,从而打开了几个竞价组件。它们都是打开的,但只有一个是活动的。所以我的问题是:当我使用上面的ajax时,如何让整个循环呈现出来,这样打开一个竞价组件就会自动关闭另一个打开的组件。(拍卖项目映射反映了正确的竞价组件,但只呈现了这一个竞价区域,因此其他区域不受影响。如果我刷新整个页面,则显示是正确的,并且只有在使用ajax时才会出现问题。)

这是页面上元素的结构(所有这些都在h:form:中)

代码语言:javascript
复制
<table id="bidstable">
    <h:panelGroup id="entireLoop">
        <ui:repeat id="repeatAuctionItems" var="auctionItem" varStatus="status" value="#{bean.auctionItems}">
            <td>... a bunch of td's with the auction item values ... and then: 
                <h:commandLink id="bid" rendered="#{some conditions}">
                    <f:ajax listener="#{bean.addBidView(auctionItem)}" render="bidView"/>
                </h:commandLink>
            </td>
        </ui:repeat>
    </h:panelGroup>
</table>

我几乎尝试了"render“中的每种元素组合--例如:

代码语言:javascript
复制
render="bidView bidsTable"

或render="bidView bidsTable:entireLoop:repeateAuctionItems“

还有我能想到的所有其他线索。毫无办法。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-27 23:00:49

您已经在相对于当前NamingContainer组件的<f:ajax render>属性中指定了客户端ID。不以命名容器分隔符(默认为: )开头的客户机ID相对于当前NamingContainer组件。<ui:repeat>就是这样一个组件。因此,客户端ID必须引用<ui:repeat>的子级。但是您尝试引用的组件实际上在<ui:repeat>之外。您需要用一个绝对的客户端ID来引用它。

要找到绝对客户机ID,您需要在浏览器中打开页面,右键单击并执行View Source,然后定位到<ui:repeat>外部最近的父JSF组件生成的HTML,在您的特定情况下就是<h:panelGroup id="entireLoop">。它看起来像这样:

代码语言:javascript
复制
<span id="someId:possiblyOtherId:entireLoop">

为了在<f:ajax render>中使用,请准确获取此客户端ID并为其添加前缀:

代码语言:javascript
复制
<f:ajax ... render=":someId:possiblyOtherId:entireLoop" />

如果它包含一个动态生成的ID,如j_id_123,那么您需要为所有父NamingContainer组件,如<h:form>,提供一个固定的ID,如<h:form id="someId">

注意,引用像<table id="bidsTable">这样的普通HTML元素的客户机ID是的,而不是。它必须是一个像<h:dataTable id="bidsTable">一样完整的JSF组件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9466977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档