JSF DataTable动态添加Column
来源:互联网 发布:阿里云盘 编辑:程序博客网 时间:2024/05/19 16:07
JSF DataTable动态添加Column
开发JSF的朋友可能会遇到这样的问题,如果DataTable的列不固定,需要动态生成, 该如何实现呢。
假设FacesConfig中配置一个名为bean的MBean,该MBean中需定义一个类型为javax.faces.component.html.HtmlDataTable类型的变量dt,页面中的DataTable设置bingding="#{bean.dt}"。
首先了解一下JSF中DataTable的渲染方式:
DataTable
--<Header> UIComponent
--<Children>List<HtmlColumn>
----<HtmlColumn>
------<Header>UIComponent
----<Children>List<UIComponent>
因此,要在后台变更DataTable的状态,可以用dt.setHeader(UIComponent)设置DataTable的表头,然后可以往dt.getChildren()中添加HtmlColumn类型的列,同样,列中也可以由Header和Children组成。代码实现如下:
private void initialReportTable(List<ExcelReport> reportList) {
dt.getChildren().clear();
for (ExcelReport report : reportList) {
HtmlColumn column = new HtmlColumn();
HtmlOutputText header = new HtmlOutputText();
header.setValueExpression("value",
getValueExpression("#{rmaReport.captions.c"
+ report.getPosition() + "}"));
column.setHeader(header);
HtmlOutputText value = new HtmlOutputText();
String ve = getVEString(report);
System.out.println(report.getCaption() + " : " + ve);
value.setValueExpression("value", getValueExpression(ve));
column.getChildren().add(value);
dt.getChildren().add(column);
}
}
其中,动态建立控件的方法为直接创建一个控件,然后通过ValueExpression来设置控件在运行时显示的值,如果是Column中的数据,则可以使用#{tableVar.ColumnName}格式的EL表达式。
- JSF DataTable动态添加Column
- JSF动态为DataTable添加列
- JSF动态为DataTable添加列
- jsf-后台动态生成richfaces的dataTable
- DataTable 动态添加 删除行
- JSF: 动态生成的DataTable, 固定表头, 固定行标,
- JSF: 动态生成的DataTable, 固定表头, 固定行标
- jsf-后台动态生成richfaces的dataTable(转载)
- JSF DataTable使用心得
- 分页 jsf组件dataTable
- JSF h:dataTable 分页
- jsf中dataTable嵌套dataTable的实例
- JSF(Myfaces) dataTable 操作测试
- 续分页 jsf组件dataTable
- JSF中dataTable自定义样式
- 动态添加一列到DataTable的第一列
- 如何动态建立一个DataTable并且为之添加数据
- C# 动态创建DataTable表,并添加新行
- RING 内核模式
- 链接
- jsp 关闭窗口触发的事件
- 原始套接字发包
- readhat的ip配置
- JSF DataTable动态添加Column
- QQ2009 协议分析及破解
- 数据库的连接数对应用系统性能的影响
- JAVA动态代理内部实现
- shell平时用的上的一些脚本
- 一段简单程序为什么在linux终端与win控制台下运行效果不同?(望高手指点)
- No.24
- jsf-后台动态生成richfaces的dataTable(转载)
- linux的less命令