【问题标题】:Primefaces datatable populating when commandButton pressed按下命令按钮时填充 Primefaces 数据表
【发布时间】:2012-10-18 12:24:03
【问题描述】:

我想在primefaces中按下commandButton时将数据加载到数据表中。第一次加载页面时,数据表必须为空,但点击命令按钮后,数据表必须加载!我能怎么做。我是primefaces的新手。

【问题讨论】:

    标签: datatable primefaces populate


    【解决方案1】:

    根据您在问题中的描述,这是一个示例(这只是@Manuel 描述的工作示例)。由于 backing bean 上的 List 为空,因此在初始渲染时,数据表将为空。当您单击命令按钮时,它将触发 doPopulateList() 方法。然后,此方法将填充列表。最后,更新属性将导致数据表从支持 bean 重新加载列表。这次列表将填充 4 条记录。

    <h:body>
        <h:form>
            <p:dataTable id="fooTable" value="#{dataTableBean.dataTableList}" var="record">
                <p:column><h:outputText value="#{record}"/></p:column>
            </p:dataTable>
    
            <p:commandButton value="Populate DataTable" actionListener="#{dataTableBean.doPopulateList()}" update="fooTable"/>
        </h:form>
    </h:body>
    

    DataTableSample 支持 bean:

    @ManagedBean
    @ViewScoped
    public class DataTableBean implements Serializable {
        List<String> dataTableList = new ArrayList<String>();
    
        /**
         * @return the dataTableList
         */
        public List<String> getDataTableList() {
            return dataTableList;
        }
    
        /**
         * @param dataTableList the dataTableList to set
         */
        public void setDataTableList(List<String> dataTableList) {
            this.dataTableList = dataTableList;
        }
    
        public void doPopulateList(){
            dataTableList.add("Record1");
            dataTableList.add("Record2");
            dataTableList.add("Record3");
            dataTableList.add("Record4");
        }
    }
    

    【讨论】:

    • 非常感谢您的帮助
    【解决方案2】:

    不要在第一次加载页面时初始化您的 dataTable 值。之后您可以更新 p:dataTable

    通过更新它的 id。只需添加

    <p:dataTable id="dataTableId" ...>
    
    <p:commandButton update="dataTableId" ..>
    

    到您的命令按钮。此外,您还需要使用

    action="#{bean.addStuffToDataTable}"
    

    actionListener="#{bean.addStuffToDataTable}"
    

    作为 p:commandButton 中的属性,以便在 dataTable 中填充数据。在使用这些属性之一之前,请务必阅读 Differences between action and actionListener

    【讨论】:

    • 我认为如果我提供额外的信息会很好。现在,我有 DataTable,它有复选框来选择任何记录。DataTable 选择属性设置为“sucBean.selectedSuc”。 selectedSuc 是“Suc”对象的数组,起初它是空的。所以当我想用于将数据加载到 Gmap 时,Eclipse 给了我“java.lang.NullPointerException”。这种情况我能做些什么?
    • 不要设置为null,可能返回一个空数组?如果这没有帮助,请提供包含 NullPointerException 的源代码。
    • @Manuel 我如何在页面加载时不初始化数据表?
    • 仅仅通过不初始化它?只需返回一个空列表。按下按钮时,您可以使用值初始化列表。
    猜你喜欢
    • 2019-06-25
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    相关资源
    最近更新 更多