有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java向JSF 2数据表动态添加行组件

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

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

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

(我不确定这是否足够清楚,所以我会尝试用其他方式说:动态插入的行没有其他拍卖项目。它有几个其他小部件。)

有办法做到这一点吗


共 (1) 个答案

  1. # 1 楼答案

    我不认为仅仅使用原始的JSF标签就可以实现你想要的。事实上,单独开发这种复合材料组件可能非常困难

    幸运的是,如果您查看PrimeFaces的^{},您将看到一个名为ExpandableRows的特性。你的桌子应该是这样的:

    <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>组件中,它确实显示在您的项目行的正下方