首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向JSF2 dataTable动态添加行组件

向JSF2 dataTable动态添加行组件
EN

Stack Overflow用户
提问于 2012-01-08 21:28:47
回答 1查看 1.5K关注 0票数 2

我有一个dataTable,其中每一行代表一个拍卖项目,并在每个项目旁边有一个出价按钮。当用户单击按钮时,我需要显示一个带有输入文本的小竞价组件,以及一个提交投标的按钮。这个“竞价”组件需要恰好位于用户竞价的拍卖项目之下。

对于常规HTML,这很简单:只需在拍卖项目行下有条件地呈现另一行即可。我知道怎么做。

但是dataTable是基于列的,我需要动态呈现的不是列,而是行(其中colspan等于此dataTable中的列数)。

(我不确定这是否足够清楚,因此我将尝试换句话说:动态插入的行没有另一个拍卖项目。它还有几个其他的小部件。)

有没有办法做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2012-01-08 23:22:12

我不认为只使用原始的JSF标记就能实现您想要的结果。事实上,您自己开发这样的复合组件可能非常困难。

幸运的是,如果你看一下PrimeFaces的,你会看到一个叫做ExpandableRows的特性。您的表应该如下所示:

代码语言:javascript
复制
<h:form>  
    <p:dataTable var="item" value="#{mrBean.itemsToBid}">  

        <f:facet name="header">  
             Items for Bidding  
        </f:facet>  

        <p:column style="width:16px">  
            <p:rowToggler />  
        </p:column>  

        <p:column headerText="Name" >
            #{item.name}
        </p:column>  

        <p:column headerText="Condition" >  
            #{item.condition} 
        </p:column>  

        <p:rowExpansion>  

            <h:panelGrid id="display" columns="2" > 
                <h:outputText value="Your bid:" />  
                <h:inputText  value="#{mrBean.bidAmount}" />  

                <h:commandButton actionListener="#{mrBean.bid(item)}" value="Bid"/>  
            </h:panelGrid>  

        </p:rowExpansion>  
    </p:dataTable>  
</h:form>  

您的竞价表单位于<p:rowExpansion>组件中,它确实显示在您的项目行的正下方。

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

https://stackoverflow.com/questions/8777933

复制
相关文章

相似问题

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