基础环境:

Oracle Fusion Middleware Tag Reference for Oracle ADF Faces

11g Release 2 (11.1.2.4.0)

E17491-06

<af:table>表格组件是ADF Faces的重要数据展现组件,更准确的描述是表格风格(或表格式)的数据展现组件,它可以通过绑定管理Bean或VO获得要展示的数据。本文介绍了基于Class作为数据模型,应用管理Bean实现表格内容填充的开发过程。


前置,创建基础工程(名称为“DemoTable”):



开发过程:

创建一个类(Class)作为表格行的数据模型。

创建JSPX页面以及表格组件。

通过后台管理Bean将数据发送给表格完成展现过程。



创建数据模型类,命名为TableRow,内涵3个属性:id,name,descr。


TableRow类代码:

packagedemo.table.app.view;publicclassTableRow{privateStringid,name,descr;publicTableRow(Stringid,Stringname,Stringdescr){super();this.id=id;this.name=name;this.descr=descr;}publicvoidsetId(Stringid){this.id=id;}publicStringgetId(){returnid;}publicvoidsetName(Stringname){this.name=name;}publicStringgetName(){returnname;}publicvoidsetDescr(Stringdescr){this.descr=descr;}publicStringgetDescr(){returndescr;}}

2.创建JSPX页面以及表格组件。

新建JSPX页面,名为demo1.jspx

从右侧的组件清单中选择Table组件,拖拽至页面范围内。

IDE提示表格基础配置,这一步骤不做修改,直接完成,生成表格组件的默认代码。

同时IDE提示会辅助插入相关标签代码,点解确认按钮即可。

生成后的默认页面状态

此时页面中的源代码:顺便提一句,表格属性rowBandingInterval指的是间隔高亮显示的行数,0表示不设定。

<?xmlversion='1.0'encoding='UTF-8'?><jsp:rootxmlns:jsp="http://java.sun.com/JSP/Page"version="2.1"xmlns:af="http://xmlns.oracle.com/adf/faces/rich"xmlns:f="http://java.sun.com/jsf/core"><jsp:directive.pagecontentType="text/html;charset=UTF-8"/><f:view><af:documenttitle="demo1.jspx"id="d1"><af:formid="f1"><af:tablevar="row"rowBandingInterval="0"id="t1"><af:columnsortable="false"headerText="col1"id="c1"><af:outputTextvalue="#{row.col1}"id="ot1"/></af:column><af:columnsortable="false"headerText="col2"id="c2"><af:outputTextvalue="#{row.col2}"id="ot2"/></af:column><af:columnsortable="false"headerText="col3"id="c3"><af:outputTextvalue="#{row.col3}"id="ot3"/></af:column><af:columnsortable="false"headerText="col4"id="c4"><af:outputTextvalue="#{row.col4}"id="ot4"/></af:column><af:columnsortable="false"headerText="col5"id="c5"><af:outputTextvalue="#{row.col5}"id="ot5"/></af:column></af:table></af:form></af:document></f:view></jsp:root>



3.通过后台管理Bean将数据发送给表格完成展现过程。

3.1创建管理Bean类,拥有列表属性“data”,初始化的时候实例化4个表格对象。

packagedemo.table.app.view;importjava.util.ArrayList;importjava.util.List;publicclassTableBean{List<TableRow>data=newArrayList<TableRow>();publicTableBean(){super();data.add(newTableRow("1","张三","测试用户1"));data.add(newTableRow("2","李四","测试用户2"));data.add(newTableRow("3","王五","测试用户3"));data.add(newTableRow("4","奥特曼","测试用户4"));}publicvoidsetData(List<TableRow>data){this.data=data;}publicList<TableRow>getData(){returndata;}}

3.2注册管理Bean

3.3修改表格代码

在<af:table>标签中,增加“value="#{bean1.data}"”

修正列信息,与数据模型类的属性想对应:

<af:tablevar="row"rowBandingInterval="0"id="t1"value="#{bean1.data}"><af:columnsortable="false"headerText="id"id="c1"><af:outputTextvalue="#{row.id}"id="ot1"/></af:column><af:columnsortable="false"headerText="name"id="c2"><af:outputTextvalue="#{row.name}"id="ot2"/></af:column><af:columnsortable="false"headerText="descr"id="c3"><af:outputTextvalue="#{row.descr}"id="ot3"/></af:column></af:table>

至此即可运行工程查看结果,右键点击JSPX文件,选择“Run”菜单项:

运行效果如图:

将表格属性rowBandingInterval值修改为1,运行效果如图:


小结:根据开发过程分析可以得出,ADF中表格的开发调用线索:

页面中定义表格组件

组件的关键属性通过EL表达式的方式将调用流指向了目标管理Bean

管理Bean提供表格组件可接受行数据模型对象清单。

行数据模型对象可以由自定义Class(get/set属性访问器)或Map对象提供。


附件:http://down.51cto.com/data/2367928