`
yourenyouyu2008
  • 浏览: 282248 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于h:dataTable的使用

    博客分类:
  • jsf
阅读更多

关于h:dataTable的使用


基本用法



后台处理



可以在table的每一行增加操作用于处理当前行(比如删除当前行),也可以在table外增加操作处理整个table(更新整个table),页面代码如下:
我们可以有多种方式来处理
1】 传统的jsp方式,也是很多初学者首先想到的方式,这种方式本质上和以前的方式没有区别,只是披上了jsf的外衣而已,强烈建议不要使用。并且这样没有办法处理整个table,按以前的方式处理是相当的麻烦。
给每一行的操作增加参数,然后在后台提取该参数
<t:dataTable var="emp" .... >
<h:commandLink id="editLink" action="#{employeeAction.prepareEdit}">
<h:outputText value="#{msg.edit}"/>
<f:param name="id" value="#{emp.id}"/>
</h:commandLink>

FacesContext context = FacesContext.getCurrentInstance();
Map map = context.getExternalContext().getRequestParameterMap();
String employeeID = (String) map.get("id");
2】 使用actionListener,来取得当前行的数据。整个表的处理很简单,直接获取list即可(参加方法3)
<h:commandLink>
<f:actionListener type="net.java.OrderActionListener" />
<h:outputText value="Order" />
</h:commandLink>
public class orderActionListener implements ActionListener {

public void processAction(ActionEvent anEvent) throws AbortProcessingException {

YourBeanClass tmpBean = null;

UIComponent tmpComponent = anEvent.getComponent();

while (null != tmpComponent && !(tmpComponent instanceof UIData)) {
tmpComponent = tmpComponent.getParent();
}

if (tmpComponent != null && (tmpComponent instanceof UIData)) {
Object tmpRowData = ((UIData) tmpComponent).getRowData();
if (tmpRowData instanceof YourBeanClass) {
tmpBean = (YourBeanClass) tmpRowData;

//TODO Implementation of your method

}
}
3】 通过绑定tale,这样就可以在后台直接通过table来获取当前行了,而不像方法2那样通过事件来获得table
<h:dataTable binding="#{testSelectItems.table}" id="hotels" value="#{testSelectItems.list}" var="hot">
<h:column id="c1">
<f:facet name="header" id="f1">label</f:facet>
<h:inputText id="bbb" value="#{hot.label}" required="true"/>
</h:column>
<h:column id="c2">
<f:facet name="header" id="f2">value</f:facet>

<h:inputText id="aaa" value="#{hot.value}" required="true"/>
</h:column>
<h:column id="c3">
<f:facet name="header" id="f3">link</f:facet>
<!- 处理当前行
<h:commandLink id="ccc" action="#{testSelectItems.actionTest1}" value="#{hot.value}">
xxx#{hot.label}
</h:commandLink>
</h:column>
</h:dataTable>
<!- 处理全部行
<h:commandButton action="#{testSelectItems.actionTest}"/>
</h:form>
public class TestSelectItems {
private UIData table=new UIData();
private List list;

public List getList(){
System.out.println("---TestSelectItems-getList----1---");
if(list==null){
System.out.println("--TestSelectItems-getList-----2---");
list=new ArrayList();
SelectItem it=new SelectItem();
it.setLabel("lable1");
it.setValue("1");
list.add(it);
it=new SelectItem();
it.setLabel("lable2");
it.setValue("2");
list.add(it);
}
return list;
}
//处理全部行
public void actionTest(){
System.out.println("----list.size():"+list.size());
System.out.println("--actionTest--");
}
//处理单行
public void actionTest1(){
SelectItem dd=(SelectItem)table.getRowData();
System.out.println("--actionTest1--:"+dd.getLabel());
}
public UIData getTable() {
return table;
}
public void setTable(UIData table) {
this.table = table;
}


增加多选操作


参见http://yourenyouyu2008.iteye.com/blog/201138


实现原理

 

0
0
分享到:
评论
3 楼 yourenyouyu2008 2008-05-22  
获取整个列表跟是不是session一点关系没有,request的也完全可以获取整个列表,我上面的全部例子中没有一个是放入session的。
2 楼 风之狐 2008-05-22  
我觉得传统的方法,很快很迅速啊,用其他的方法还得获取整个列表,要么你就把他定义为session,只要你的数据足够小,内存足够大,访问的人足够少。
1 楼 kencool 2008-04-30  
写的很好,不过未贴完吧

相关推荐

    JSF2datatable分页控件与左侧菜单

    如:richfaces、primefaces、myfaces等,就日前来讲primefaces功能很强大,控件很多,但有一点不好就是不支持IE6,特别是下拉列表,p:dialog等,其它的分页p:datatable实际使用起来总有不如意的地方。richfaces还...

    Java Server Faces API 组件标签 API Reference 速查手册

    Java Server Faces API 组件标签 API Reference 速查手册 ... javax.faces.Command javax.faces.Button javax.faces.Link javax.faces.Data javax.faces.Table ...h:dataTable h:form h:graphicImage

    人事信息管理系统

    &lt;h:dataTable value="#{loginBean.persons}" var="person" border="5" cellpadding="5" cellspacing="2"&gt; &lt;h:column&gt; &lt;f:facet name="header"&gt; &lt;h:outputText id="headerText1" value="职工号"/&gt; &lt;/f:facet&gt;...

    maven springBoot mybatisPlus H-ui Admin dataTable

    maven springBoot mybatisPlus H-ui Admin dataTable一些框架的使用 不用数据库。

    JSF2.xdatatable分页控件与左侧菜单最简单应用

    如:richfaces、primefaces、myfaces等,就日前来讲primefaces功能很强大,控件很多,但有一点不好就是不支持IE6,特别是下拉列表,p:dialog等,其它的分页p:datatable实际使用起来总有不如意的地方。richfaces还...

    js-datatable:jQuery插件可通过数据可视化生成动态HTML表https:toni-heittola.github.iojs-datatable

    js-datatable-具有数据可视化的动态表js-datatable是一个开放源代码的JQuery插件,用于生成具有数据可视化功能的动态HTML表。 该插件最初是为满足学术数据可视化( )的需要而开发的,并与静态页面生成框架一起使用...

    CoCreate-datatable:Vanilla JavaScript中的一个简单的datatable组件。 使用HTML5数据属性和_或JavaScript API轻松配置

    CoCreate数据表Vanilla JavaScript中的一个简单的datatable组件。 使用HTML5数据属性和/...NPM $ npm i @cocreate/datatable目录如何贡献关于执照 公告内容该库的所有更新都记录在我们的CHANGELOG和发行版中。 您也可以

    DataProcessor.zip

    4、把浮点数格式化为{H:min:s.ms}格式的字符串 double -&gt; {H:min:s.ms} 5、获取浮点数值的有效小数位数 6、对数据行字段取值方法 7、获取数组的异或校验值 8、判断2个数组元素值是否相同 9、克隆DataTable及数据的...

    [Primefaces]Datatable內容左右移動方法1

    -- 移動查詢結果 --&gt;&lt;div class="scrollRightDiv"&gt; &lt;h:graphicImage library="images" name=

    brain-Embolados:脑

    Faltava o &lt;h&gt; Pastas com pacote incorretos Path de source mal mapeado 问题 2 :Maven 没有构建 Estava apontando para uma versão de uma dependência que não rolava 问题3: Datatable中没有调用请求...

    django使用ajax 与后台进行交互

    需求:点击datatable 的一行...1、构建一个模态框:具体使用方法可以在网上找:https://www.w3h5.com/post/74.html 创建模态框(Modal) 开始演示模态框 × 模态框(Modal)标题 在这里添加一些文本

    Mastering-software-development

    您可以使用以下方法从安装buildingpackage的发行版本: install.packages( " buildingpackage " ) ' = requireNamespace("DT", quietly = TRUE) requireNamespace("lubridate", quietly = TRUE) requireNamespace(...

    java server face 教程

    对于必须使用表格方式呈现的数据,JSF 的 &lt;h:dataTable&gt; 卷标协助您进行动 态表格数据的输出。 o 简单的表格 o 表头, 表尾 o TableModel 类别 自订组件 JSF 让您可以自订组件,每个组件都是可替换的,这使得组件在...

    JSF基础教程 简体中文

    对于必须使用表格方式呈现的数据,JSF 的 &lt;h:dataTable&gt; 卷标协助您进行动态表格数据的输出。 o 简单的表格 o 表头, 表尾 o TableModel 类别  自订组件  JSF 让您可以自订组件,每个组件都是可替换的,这使得...

    JSF 标签,前后台交换代码

    JSF标签使用 前台与后台交换 单选与多选的选中值问题 下载下来放到myeclipse中部署运行即可

    ThinkPHP整合datatables实现服务端分页的示例代码

    页面样式来自于H-ui框架(datatables版本为1.10.0) 主要修改(databases)配置项为: 1) bProcessing:true 使用ajax源 2) serverSide:true 使用服务端分页 3) createdRow:function(){} 回调函数,用于添加事件或类名 4)...

    itextsharp生成pdf插件

    生成pdf的插件工具,绿色插件,请放心使用,C#使用方法:先引用itextsharp.dll动态链接库,然后using itextsharp.text等空间,即可使用。 引用: using iTextSharp; using iTextSharp.text; using iTextSharp.text....

    OverlayTable:为包含全文格式和符号支持的图形创建表格叠加。-matlab开发

    用法:[h,hbox] = OverlayTable(gcf,dataTable,left,top,width,height,varargin) [h,hbox] = OverlayTable(gcf,dataTable) 注意:表格由注释文本框组成,每个单元格一个桌子。 表格的完整格式,包括字体、颜色、...

    quarkus-faces:Quarkus遇见JSF

    夸克斯脸 目标 主要目标是取出一个开箱即用的JSF应用程序( )并在Java EE Server和运行它。 一些附加目标: 看看我们可以通过结合各种针对JSF应用程序的优化技巧来...在使用Incognito Mode完全相同的页面/datatable/c

    asp.net知识库

    .NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎...

Global site tag (gtag.js) - Google Analytics