1

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

4

2 回答 2

2

根据您在问题中的描述,这是一个示例(这只是@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");
    }
}
于 2012-10-19T12:33:43.270 回答
2

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

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

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

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

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

action="#{bean.addStuffToDataTable}"

或者

actionListener="#{bean.addStuffToDataTable}"

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

于 2012-10-18T12:51:58.160 回答