jsf-后台动态生成richfaces的dataTable(转载)
来源:互联网 发布:linux删除用户附加组 编辑:程序博客网 时间:2024/05/19 12:40
因为项目需要表格的列不固定,所以我想在后台动态生成rich的dataTable
因为我对这个也不是很熟,所以一步一步来
第一步:添加一列从后台取数据。
前台页面:
<rich:dataTable id="fiSalaryDetailTable" var="detail" binding="#{salaryDetailBean.fiSalaryDetailTable}"
cellpadding="0" cellspacing="0" style="width:700px;"
value="#{salaryDetailBean.detailDataModel}"
styleClass="datatable-cellStyle" headerClass="standardTable_Header"
footerClass="standardTable_Header" rowKeyVar="index"
rowClasses="standardTable_Row1,standardTable_Row2"
columnClasses="standardTable_ColumnCentered,standardTable_ColumnLefted,
standardTable_ColumnLefted,standardTable_ColumnLefted,
standardTable_ColumnLefted"
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#ffffff'">
</rich:dataTable>
后台方法:
public ListDataModel getDetailDataModel() {
if(detailDataModel == null){
detailDataModel = new ListDataModel();
List<VSalaryDetail> vSalaryDetail = salaryDetailSer.queryVSalaryDetailByAccountNo(accountNo);
System.err.println("vSalaryDetail:"+vSalaryDetail.size());
detailDataModel.setWrappedData(vSalaryDetail);
}
return detailDataModel;
}
public HtmlDataTable getFiSalaryDetailTable() {
System.err.println("vSalaryDetail:=========:"+fiSalaryDetailTable);
if(fiSalaryDetailTable == null){
fiSalaryDetailTable = new HtmlDataTable();
}
HtmlColumn column = new HtmlColumn();
HtmlOutputText header = new HtmlOutputText();
header.setValueExpression("value", getValueExpression("#{detail.empName}"));
column.getChildren().add(header);
fiSalaryDetailTable.getChildren().add(column);
return fiSalaryDetailTable;
}
/**
* 获取value expression
* @param ve
* @return
*/
private ValueExpression getValueExpression(String ve){
return Expressions.instance().createValueExpression(ve).toUnifiedValueExpression();
}
这样就可以简单的构建 一个了。在构建时报异常:
严重: Servlet.service() for servlet jsp threw exception
java.lang.ClassNotFoundException: org.jboss.el.lang.FunctionMapperImpl
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
我从网上下载了一个jboss-el.jar放到项目中就可以了。
第二步:加带header
页面代码:不变如上
后台代码:仅上面的getFiSalaryDetailTable()方法改变,其它未变.
public HtmlDataTable getFiSalaryDetailTable() {
System.err.println("vSalaryDetail:=========:"+fiSalaryDetailTable);
if(fiSalaryDetailTable == null){
fiSalaryDetailTable = new HtmlDataTable();
}
HtmlColumnGroup columnGroup = new HtmlColumnGroup(); //加rich:columnGroup用来放表的列名的列
HtmlColumn headerColumn = new HtmlColumn(); //定义一列放列名内容
HtmlOutputText headerText = new HtmlOutputText(); //列名的内容
headerText.setValue("员工名称");
headerColumn.getChildren().add(headerText); //给列加内容
columnGroup.getChildren().add(headerColumn); //给列组加列
HtmlColumn column = new HtmlColumn();
HtmlOutputText header = new HtmlOutputText();
header.setValueExpression("value", getValueExpression("#{detail.empName}"));
column.getChildren().add(header);
fiSalaryDetailTable.setHeader(columnGroup); //给表格加header
fiSalaryDetailTable.getChildren().add(column);
return fiSalaryDetailTable;
}
这个也是一个很简单的静态的。
第三步:优化完善以后的,增加了一个自带的分页工具条,并加了一些css样式,都很简单
页面代码:加了一个<h:form>,因为加了分页工具条的原因,否则会报异常
<h:form>
<rich:dataTable id="fiSalaryDetailTable" var="detail" binding="#{salaryDetailBean.fiSalaryDetailTable}"
cellpadding="0" cellspacing="0" style="width:700px;"
value="#{salaryDetailBean.detailDataModel}"
styleClass="datatable-cellStyle" headerClass="standardTable_Header"
footerClass="standardTable_Header" rowKeyVar="index"
rowClasses="standardTable_Row1,standardTable_Row2"
columnClasses="standardTable_ColumnCentered,standardTable_ColumnLefted,
standardTable_ColumnLefted,standardTable_ColumnLefted,
standardTable_ColumnLefted"
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#ffffff'">
</rich:dataTable>
</h:form>
后台代码:也仅仅是修改了一下 getFiSalaryDetailTable() 方法。
public HtmlDataTable getFiSalaryDetailTable() {
System.err.println("vSalaryDetail:=========:"+fiSalaryDetailTable);
if(fiSalaryDetailTable == null){
fiSalaryDetailTable = new HtmlDataTable();
HtmlColumnGroup columnGroup = new HtmlColumnGroup();
HtmlColumn headerColumn = new HtmlColumn();
HtmlOutputText headerText = new HtmlOutputText();
headerText.setValue("员工名称");
headerColumn.getChildren().add(headerText);
columnGroup.setColumnClasses("datatable-cellStyle");
columnGroup.getChildren().add(headerColumn);
HtmlColumn column = new HtmlColumn();
HtmlOutputText header = new HtmlOutputText();
header.setValueExpression("value", getValueExpression("#{detail.empName}"));
header.setStyleClass("fontStyle"); //给header设置css
column.getChildren().add(header);
fiSalaryDetailTable.setHeader(columnGroup);
fiSalaryDetailTable.getChildren().add(column);
fiSalaryDetailTable.setRows(15); //设置每页多少行。
HtmlDatascroller dataScroller = new HtmlDatascroller(); //分页工具条
dataScroller.setFor("fiSalaryDetailTable"); //设置给哪个表加上
dataScroller.setMaxPages(19); //最大页数
dataScroller.setAlign("left"); //设置align属性值
fiSalaryDetailTable.setFooter(dataScroller); //设置底部
}
return fiSalaryDetailTable;
}
对于动态生成,只要根据业务条件生成就可以了。
添加时间转换器
HtmlOutputText columnValueText = new HtmlOutputText();
DateTimeConverter dateConvert = new DateTimeConverter();
dateConvert.setPattern("yyyy-MM-dd");
columnValueText.setConverter(dateConvert);
参照:
http://stenlylee.javaeye.com/blog/317180
http://blog.csdn.net/Vanessa219/archive/2009/02/17/3901123.aspx
http://pz0513.blog.51cto.com/443986/113798
- jsf-后台动态生成richfaces的dataTable(转载)
- jsf-后台动态生成richfaces的dataTable
- JSF: 动态生成的DataTable, 固定表头, 固定行标,
- JSF: 动态生成的DataTable, 固定表头, 固定行标
- JSF richfaces的dataTable组件中filter在IE和Firefox下不兼容的问题
- JSF, MyFaces, RichFaces 和 Facelets的区别
- JSF DataTable动态添加Column
- jsf datatable后台获取数据方法
- JSF、Richfaces学习
- JSF、Richfaces学习
- JSF动态生成组件
- JSF动态生成菜单
- JSF动态生成组件
- RichFaces-jsf,a4j,rich项目中总结的标签说明
- jsf中dataTable嵌套dataTable的实例
- JSF动态为DataTable添加列
- JSF动态为DataTable添加列
- 动态生成DataTable
- 数据库的连接数对应用系统性能的影响
- JAVA动态代理内部实现
- shell平时用的上的一些脚本
- 一段简单程序为什么在linux终端与win控制台下运行效果不同?(望高手指点)
- No.24
- jsf-后台动态生成richfaces的dataTable(转载)
- linux的less命令
- html读书笔记三
- 差点将数据库搞坏
- XP 下Tomcat 6.0.26 配置
- 苹果15英寸MacBook Pro内部
- 用Dreamware制作弹出菜单
- 垂直同步
- 一天一个CRT函数 strstr