【问题标题】:How to fill a JSF/Primefaces DataTable from a ManagedBean?如何从 ManagedBean 填充 JSF/Primefaces DataTable?
【发布时间】:2014-08-29 11:41:21
【问题描述】:

我正在使用 JSF2 和 Primefaces 5 实现我的第一个应用程序。 我希望当用户按下按钮时,我的托管 bean 创建一个新的 DataTable 并用一些数据填充它。我怎样才能从我的托管 bean 中做到这一点? 这是我的托管 bean 代码的一部分。

...
//This is the managed bean's method executed when the user presses the button.  
public void execute() {
    ...
    //Get the data from database and put the entries in a list of java beans called myList.
    //Here I create a ListDataModel to convert myList in a DataModel to pass to the datatable
    ListDataModel<myJavaBean> tableData = new ListDataModel<myJavaBean>(myList);
    //Then I create a new datatable..
    DataTable dataTable = new DataTable();
    //.. and I set the data
    dataTable.setValue(tableData);
    //I define the columns
    Column idColumn = new Column();
    idColumn.setHeaderText("id");
    Column dateColumn = new Column();
    dateColumn.setHeaderText("date");
    Column timeColumn = new Column();
    timeColumn.setHeaderText("time");
    Column stateColumn = new Column();
    stateColumn.setHeaderText("state");
    //Here I add the columns to the table
    dataTable.getChildren().add(idColumn);
    dataTable.getChildren().add(dateColumn);
    dataTable.getChildren().add(timeColumn);
    dataTable.getChildren().add(stateColumn);
    ...         

当我按下按钮时,这部分代码会创建一个具有正确列数和正确标题的新 DataTable。 此外,行数是正确的,但行完全是空的,我想这是因为我没有将列与列表的相应 java bean 属性绑定。我该怎么做?

【问题讨论】:

    标签: jsf jsf-2 primefaces datatable managed-bean


    【解决方案1】:

    所以你想从一个托管 bean 创建一个 UI 组件???

    也许我在这里遗漏了一些东西,但实现这一点的正确和更简单的方法是必须使用&lt;p:datatable&gt; 在 facelet (your_page.hxtml) 中声明 Datatable,并将其链接到包含数据的支持 bean(即value="#{yourbean.yourlist}")。

    在启动时,您的支持 bean 可以是空的。无论您的数据是否已加载,您只需要以不同的方式呈现 UI(请参阅数据表组件上的“已渲染”标签)。

    当你必须做的时候(按钮/执行)将数据填充到 bean 中。

    不要忘记更新 UI 部分(请参阅操作按钮上的“更新”标签)以刷新更改的页面区域(至少是数据表)。

    例子:

     <p:datatable id="mytable" var="child" value="#{mybean.children}" rendered="#{not empty mybean.children}"> 
     ...
     </p:datatable>
     ...
     <p:button update="mytable">
     ...
    

    【讨论】:

    • 嗨,Stephane,根据您的建议,效果很好!而且代码比我写的要干净得多。非常感谢!
    猜你喜欢
    • 2014-05-19
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    相关资源
    最近更新 更多