JSF在托管bean中获取表行数据

时间:2015-12-04 20:28:23

标签: jsf jsf-2 primefaces

我是JSF的新手,我在按下提交按钮时尝试在数据表中获取行数据。我读了一下DataModel,但我不知道如何在我的情况下使用它,我的代码如下:

查看:

<p:dataTable binding="#{examSchedule.myDataTable}" 
             value="#{examSchedule.deptCourses}" 
             rowIndexVar="index" 
             id="dataTableID" 
             rendered="#{not empty examSchedule.deptCourses}"    
             var="data">

    <p:column headerText="m">
        #{index+1}
    </p:column>

    <p:column headerText="sub">
        <p:outputLabel value="#{data.name}" />
    </p:column>

    <p:column headerText="start date">
        <p:calendar id="startTime" 
                    value="#{examSchedule.startDate}" 
                    pattern="HH:mm" 
                    timeOnly="true" />
    </p:column>

    <p:column headerText="end date">
        <p:calendar id="endTime" 
                    value="#{examSchedule.endDate}" 
                    pattern="HH:mm" timeOnly="true" />                  
    </p:column>

    <f:facet name="footer">
        <p:commandButton value="save" 
                         ajax="false" 
                         type="submit" 
                         action="#{examSchedule.save}" 
                         update="dataTableID" />
    </f:facet>

</p:dataTable>

型号:

@Named(value="examSchedule")
public class ExamScheduleBean {

    private DataTable myDataTable;
    private List<Courses> DeptCourses;

    public void getTableColumns() {
        for(int i = 0; i < DeptCourses.size(); i++) {
            myDataTable.setRowIndex(i);
            List<org.primefaces.component.api.UIColumn> columns = myDataTable.getColumns();
            for (org.primefaces.component.api.UIColumn uiColumn : columns) {
                System.out.println(uiColumn.getField());                
            }
        }
    }

    public void save() {
         getTableColumns();
    }
}

假设DeptCourses有数据,我想在单击保存按钮时获取数据表中的所有行。我尝试了getTableColumns()中的代码,但它打印null,我无法保存deptCourses,因为只有第一列从这些列表中获取数据而其他列没有这些列表的数据,用户在提交前会输入数据,有关如何操作的想法吗?

0 个答案:

没有答案