在Web应用中,html表格常用于放置内容。JSF允许使用h:dataTable标签来放置组件,其遍历数据来创建html表格。
1
<
h:dataTable
value
="#{item}"
var
="item"
>
2
<
h:column
><
h:outputText
value
="#{item.name}"
/>
h:column
>
3
<
h:column
><
h:outputText
value
="#{item.another}"
/>
h:column
>
4
h:dataTable
>
value属性表示所要遍历的数据,其可以是下列值之一:数组、List、java.sql.List实例、javax.servlet.jsp.jstl.Result实例、javax.faces.model.DataModel实例。在每次遍历之前,创建一个请求范围内的变量,并使用var属性来命名。当遍历时,它将数组、列表、结果集等中的每个项目都放到该标签的正文体中,使用var属性指定的名称来引用。
正如上例所显示的那样,h:dataTable标签的正文体只包含h:column标签,除了可
选的标题和脚注组件之外,每列都可以包含无数的组件。任何时候都可以在有自组
建的组件内部指定模板文件(即不是JSF标签的其他东西),但必须将这些模板文
本封装到f:verbatim标签的正文体内或者使用h:outputText来产生该模板文本。例如:
1
<
h:column
>
2
<
h:outputText
value
="#{item.name}"
/>
3
<
f:verbatim
>
,
f:verbatim
>
4
h:column
>
使用f:facet来为表格添加标题和脚注,如:
1
<
h:column
>
2
<
f:facet
name
="header"
><
h:outputText
value
="#{msgs.nameColumn}"
/>
f:facet
>
3
<
f:facet
name
="footer"
><
h:outputText
value
="#{msgs.footerColumn}"
/>
f:facet
>
4
h:column
>
要在表格的标题和脚注中添加多个组件,必须在h
anelGroup标签中将它们分成组,或者使用h
anelGrid或h:dataTable来将它们放到一个容器组件中。如果在一个facet中放置多个组件,只会显示第一个组件。
可以向表格中添加任何我们所需要的组件,并使用rendered属性来进行有条件的呈现、处理事件等。
使用dataTable实例: 编辑表格单元—只需提供所需要编辑的输入组件,单击复选框来编辑行,然后单击保存修改按钮来保存更改。
程序清单1 index.jsp
1
234567891011121314151617181920212223242526272829303132
3334
35 36 37 38 复选框的值与当前名称是否处于编辑状态相一致,如果处于编辑状态,则该复选框被选中,出现的是输入组件inputText,否则呈现的是输出组件outputText.程序清单2 messages.properties
windowTitle=Editing Table Cells
lastnameColumn=Last Name
firstnameColumn=First Name
editColumn=Edit
alphanumeric=[alpha]
saveChangeButtonText=Save Changes程序清单3 Name.java
1
publicclassName{2privateString first;3privateString last;4booleaneditable=false;5
publicName(String first,String last){6this.first=first;7this.last=last;8}9//相应的getter/setter方法10}11程序清单4 TableData.java
1
publicclassTableData{2
privatestaticfinalName[] names=newName[]{3newName("Willian","Dupont",4newName("Anna","Keeney",5newName("Maoko","Randor",6newName("John","Wilson"7};8
publicName[] getNames(){9returnnames;10}}程序清单5 faces-config.xml
faces-config.xml配置1
23en456tableData7com.corejsf.TableData8session910程序清单6 web.xml
web.xml配置1
2Faces Servlet3javax.faces.webapp.FacesServlet456Faces Servlet7*.faces8
还可以为指定相应行和列的样式,h:dataTable具有指定css类的一些属性,如styleClass(将表格作为一个整体)、headerClass和footerClass(列标题和脚注)、columnClasses和rowClasses(单独的行和列)。 其中rowClasses和columnClasses属性是互斥的,若二者皆指定则会使用columnClasses。
其他应用:数据库表格、表格模型以及分类和筛选等。
posted on 2006-09-27 15:11 土牛小屋 阅读(7195) 评论(5) 编辑 收藏