`
yourenyouyu2008
  • 浏览: 287903 次
  • 性别: 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  
写的很好,不过未贴完吧

相关推荐

    jsf2.0 dataTable单行修改例子

    4. **列显示**:使用`&lt;h:column&gt;`标签为每列定义显示内容,可以是文本、输入框或其他组件。对于可编辑的列,可以使用`&lt;h:inputText&gt;`替换`&lt;h:outputText&gt;`。 5. **编辑模式**:为了实现单行编辑,通常需要一个触发...

    JSF-2-DataTable

    在JSF页面中,DataTable通常通过`&lt;h:datatable&gt;`标签来声明。开发者需要指定一个值属性,该属性指向包含要显示数据的列表,以及一个var属性,用于在循环中引用当前项。 ```html &lt;h:dataTable value="#{bean....

    ajax4jsf 刷新datatable 例子

    通过学习和实践这个“ajax4jsf 刷新datatable 例子”,开发者可以深入理解如何结合使用Ajax4jsf和JSF的datatable组件来创建交互性强且响应迅速的Web应用程序。在myweb项目中,你可以找到具体实现这些功能的代码和...

    JSF2datatable分页控件与左侧菜单

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

    jsf常用文档datatable行样式,frameset及树型目录dtree,jsf滚动组件

    4. **JSF实现排序功能**:在`&lt;h:datatable&gt;`中,可以使用`sortBy`属性来指定列的排序依据。同时,可以提供排序图标(升序/降序)和监听用户点击事件来实现动态排序。排序功能对于数据量较大的表格尤其有用。 5. **...

    JsonConverter解序列化DataTable小数位丢失.pdf

    在使用***进行JSON数据到DataTable的数据集解序列化时,需要特别注意数据类型自动推断导致的小数位丢失问题。由于DataTable的列名不区分大小写以及数据类型推断是基于第一行数据的特性,可能会导致小数位被错误地...

    《JSF标签》简体中文版

    可以使用`&lt;h:dataTable&gt;`来创建一个基本的表格。 示例代码: ```html &lt;h:dataTable value="#{bean.users}" var="user"&gt; &lt;h:column&gt; &lt;f:facet name="header"&gt;ID&lt;/f:facet&gt; #{user.id} &lt;/h:column&gt; &lt;h:column&gt; ...

    《JSF标签》简体中文版(一定要会的).pdf

    在JSF中,处理表格通常使用`&lt;h:dataTable&gt;`标签,它可以轻松地展示数据集。例如: ```xml &lt;h:dataTable value="#{bean.data}" var="item"&gt; &lt;h:column&gt; &lt;f:facet name="header"&gt;标题&lt;/f:facet&gt; #{item.column...

    richfaces中的datagrid显示数据

    要使用`rich:dataTable`组件,首先需要在页面中引入相应的RichFaces库,并确保项目中已经添加了RichFaces依赖。 在示例代码中,可以看到`rich:dataTable`的配置如下: ```xml &lt;rich:dataTable id="carList" width=...

    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;...

    jsf常用控件的使用

    - `h:dataTable`:用于显示动态数据,常与数据模型(如List或ArrayList)绑定。 - `p:tree`和`p:treeTable`(PrimeFaces扩展):用于展示层次结构的数据。 8. **导航控件**: - `h:commandButton`和`h:...

    maven springBoot mybatisPlus H-ui Admin dataTable

    综上所述,这个项目可能是一个使用Maven管理的、基于Spring Boot的Web应用,它利用MyBatis Plus简化数据库操作,使用H-ui Admin作为后台管理界面,并通过dataTable插件增强表格展示。由于描述中提到“不用数据库”,...

    JSF标签详解(一个不漏).doc

    facet标签用于申明一种特殊的关系,常与h:panelGrid和h:dataTable等标签连用,申明组件为标题或页脚。示例代码: ``` &lt;f:facet name="header"&gt; &lt;h:outputText value="Title"/&gt; &lt;/f:facet&gt; ``` loadBundle load...

    详细用法jsf in action

    本书对JSF中的标准组件进行了详尽的介绍,包括`&lt;h:inputText&gt;`、`&lt;h:commandButton&gt;`、`&lt;h:dataTable&gt;`等。这些组件不仅简化了HTML元素的使用,还提供了数据绑定、事件处理等功能。例如,`&lt;h:dataTable&gt;`用于展示...

    Richfaces的DateTable

    - **分页**:使用`rows`和`rowsPerPage`属性控制每页显示的数据量,通过`first`和`last`属性获取当前页数据。 - **筛选**:可以添加`&lt;rich:filter&gt;`来实现列级别的筛选功能。 6. **优化和性能** 为了优化...

    《JSF标签》简体中文版.pdf

    &lt;h:dataTable value="#{bean.items}" var="item"&gt; &lt;h:column&gt; &lt;f:facet name="header"&gt;Item ID&lt;/f:facet&gt; #{item.id} &lt;/h:column&gt; &lt;h:column&gt; &lt;f:facet name="header"&gt;Item Name&lt;/f:facet&gt; #{item.name} &lt;/h...

    jsf 分页

    这个组件通常与`p:dataTable`配合使用,后者用于显示数据集: ```html &lt;!DOCTYPE html&gt; &lt;html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:p=...

    使用 JSF 构建数据库驱动的应用程序

    一旦查询结果集准备好,就可以使用JSF组件如`&lt;h:dataTable&gt;`来展示结果。 ```html &lt;h:dataTable value="#{bean.resultSet}" var="row"&gt; &lt;h:column&gt; &lt;f:facet name="header"&gt;Email&lt;/f:facet&gt; #{row.EMAIL} &lt;/h:...

Global site tag (gtag.js) - Google Analytics