jsf初学数据表(DataTable)的绑定

来看看简单的datatable例子:

faces:

<h:form>
         <h:dataTable value="#{tableData.names}" var="name">
            <h:column>
               #{name.last},
            </h:column>

            <h:column>
               #{name.first}
            </h:column>
         </h:dataTable>
      </h:form>
View Code

在上面的页面中有几个属性值得注意,

value:表示数据源,一般为List、ArrayList、数组等,是从bean得到的数据

var:可以看着是数据源中的一条数据的别名。

在看看bean如下:

@Named // or @ManagedBean
@SessionScoped
public class TableData implements Serializable {
   private static final Name[] names = new Name[] {
       new Name("William", "Dupont"),
       new Name("Anna", "Keeney"),
       new Name("Mariko", "Randor"),
       new Name("John", "Wilson")
   };

   public Name[] getNames() { return names;}
}
View Code

就这样一个简单datatable例子。

在开发中一般表格都是有表头和表尾的,表头在DataTable中用<f:facet name="header">表示。修改下上面faces如下:

<h:dataTable value="#{tableData.names}" var="name">
            <h:column>
                <f:facet name="header">last</f:facet>
                #{name.last},
            </h:column>

            <h:column>
                <f:facet name="header">first</f:facet>
               #{name.first}
            </h:column>
         </h:dataTable>
View Code

当然样式是可以自己控制的。

二:

在我们快速开发中特别是在MVC中使用HTML标签很多。这里还有一种方法来代替Datatable比如下面的例子:

<table class="table-list">
                    <thead>
                        <tr>
                            <th></th>
                            <th style="140px">
                                ISBN
                            </th>
                            <th style="182px">
                                书名
                            </th>
                            <th>
                                出版日期
                            </th>
                            <th>
                                单价
                            </th>
                            
                        </tr>
                    </thead>
                     <tbody>
                         <ui:repeat value="#{summary.data}" var="name" varStatus="status">
                         <tr>
                            <td>#{status.index + 1}</td>
                            <td>
                                #{name.isbn}
                            </td>
                            <td title="#{name.title}">
                                <input type="text" readonly="readonly" value="#{name.title}" style="background-color:#FFFFFF; border:1px; 180px;" />
                            </td>
                            <td>
                                #{name.pubdate}
                            </td>
                            <td>
                                #{name.price}
                            </td>
                         </tr>
                         </ui:repeat>
                     </tbody>
                </table>

<ui:repeat>来代替DataTable。
repeat的具体用法和datatable一样。。
原文地址:https://www.cnblogs.com/xxtkong/p/3503964.html