现在已经有不少JSF实现了,如RI、myFaces、ADF、ICEFaces等,但是像myFaces、ADF太杂,速度太慢,所以原始的JSF-RI还是我开发的首选。
RI也经常让我苦恼,因为很多东西都要自己写。比如表格的行选取这个问题。
想要像邮箱那样在列表的最前面打勾,就可以对这行记录进行操作,我花了不少力气,网上搜的内容都不能实现,最后还是硬着头皮自己摸索出来了!
下面说一下我的不成熟的经验之谈。
<h:dataTable width="700px" id="objectList" rows="10" columnClasses="col"
styleClass="t_all" value="#{supBack.ldm}" var="list" headerClass="t_header"
frame="box" rules="rows" border="1" cellspacing="0" >
<h:column id="spchecked">
<f:facet name="header"><h:outputText styleClass="headerText" value="选择" /></f:facet>
<h:selectBooleanCheckbox value="#{list.selected}" />
</h:column>
<h:column id="spid">
<f:facet name="header"><h:outputText styleClass="headerText" value="编号" /></f:facet>
<h:outputText value="#{list.spId}"/>
</h:column>
<h:column id="spname">
<f:facet name="header"><h:outputText styleClass="headerText" value="名称" /></f:facet>
<h:outputText value="#{list.spName}"/>
</h:column>
......
</h:dataTable>
<br/>
<h:commandButton value="选取" action="#{supBack.tableCheckAction}"/>
当然,我在POJO里多加了一个private boolean selected,与list.selected对应。
BackBean是关键,dataTable的value我用ListDataModal,因为它可以控制数据行。
private ListDataModel ldm;
......
//给dataTable的value
public ListDataModel getLdm(){
if(this.ldm==null){
ldm= new ListDataModel();
ldm.setWrappedData (supService.getSupList());
}
//上面的if(){}非常重要,它防止了按“选取”按钮后ldm被初始化,保存了
//我们勾选后的状态。如果没有的话,ldm又被supService.getSupList()
//重新赋值了。
return ldm;
}
.......
//表格选取
public void tableCheckAction(){
List<Supplier> beCheckList=new ArrayList<Supplier>();
List<Supplier> cklist=(List<Supplier>)ldm.getWrappedData();
Iterator<Supplier> ckit=cklist.iterator();
while(ckit.hasNext()){
Supplier sp=ckit.next();
if(sp.isSelected()){
beCheckList.add(sp);
}
}
//检验打印结果
Iterator<Supplier> it=beCheckList.iterator();
System.out.println("被选择的记录:");
while(it.hasNext()){
Supplier ckSp=it.next();
System.out.println(ckSp.getSpId()+" "+ckSp.getSpName());
}
}
.......
如果你还有疑问,可以联系我,EMAIL:lxdhdgss@gmail.com
GOOD LUCK!
帮朋友挂个链接:
杭州印刷
分享到:
相关推荐
- **筛选**:可以添加`filterBy`属性,让用户通过输入框对数据进行筛选。 - **行选择**:`selection`属性允许用户选择特定行,这对于执行单行操作非常有用。 - **编辑模式**:`editable`属性控制单元格是否可编辑...
### 使用JSF页面动态创建表格 #### 背景与目的 在开发Web应用程序时,经常需要根据不同的数据集或用户操作动态生成表格。JavaServer Faces(简称JSF)是一种用于构建服务器端Java应用程序的标准技术,它允许开发者...
2. **JSF组件**:JSF提供了一系列预定义的UI组件,如按钮、输入字段、表格等,开发者可以通过XML(通常在`.xhtml`文件中)或Java代码来声明和使用这些组件。 3. ** Managed Beans**:Managed Beans是JSF中的核心...
JSF(JavaServer Faces)是...通过研究这些文件,你可以深入理解JSF如何处理用户输入,如何进行数据验证,以及如何与其他服务(如邮件服务)集成。不过,根据描述中的建议,这个示例可能存在问题,下载前需要谨慎考虑。
- **内置验证**:JSF 提供了内置的数据验证机制,例如在`<h:input>`标签中使用`required`属性进行非空验证,或者使用`validator`属性调用自定义验证器。 - **自定义验证器**:当内置验证不够用时,开发者可以创建...
在IT行业中,JavaScript Server Faces(JSF)是一种用于构建企业级Web应用的Java框架,而本文将重点关注如何在JSF环境中实现Excel文件的上传、处理并将其内容导入到数据库中,以及在浏览器中预览Excel表格。...
它定义了一套标准的UI组件库,如按钮、文本框、表格等,开发者可以通过XML或JSF特定的标签来使用这些组件。这使得界面设计变得更加直观和高效。 JSF的生命周期是其工作方式的关键。它包括六个主要阶段:恢复视图、...
通过这个JSF数据仓库实现,开发者不仅可以学习到如何构建一个基于JSF的Web应用程序,还能掌握如何处理数据库操作,以及如何创建和运行一个完整的DEMO,这对提升Java Web开发技能大有裨益。同时,源码分析对于理解JSF...
在JavaServer Faces (JSF)框架中,分页是一种常用的技术,用于处理大量数据时提供更好的用户体验。当数据集过大,一次性加载所有记录到页面上会导致性能下降且用户界面响应变慢。通过分页,我们可以将数据分成多个...
1. **组件驱动**:JSF拥有大量的内置组件,如输入字段、按钮、表格等,开发者可以通过声明式方式使用它们,减少了编码量。 2. **事件驱动**:用户交互触发事件,JSF会处理这些事件并调用对应的处理方法。 3. **可...
UIRepeat作为容器组件,可以包含其他JSF组件,如`h:outputText`、`h:inputText`等,并对这些子组件进行多次迭代渲染。 **UIRepeat的工作原理** 是通过遍历提供的数据源,为每个数据项创建一个实例,并将当前项的值...
JSF使用Expression Language (EL) 来实现视图层与模型层的数据绑定。EL表达式,如`${bean.property}`,可以轻松地访问 Managed Bean 中的属性。JSF 1.2增强了EL的表达能力,支持更多的操作符和上下文变量。 ### 4. ...
在本项目中,“jsf+javabean+jdbc完成对表增删查改”指的是使用JSF与JavaBean以及JDBC技术来实现对数据库中表格的基本操作:添加(Insert)、删除(Delete)、查询(Query)和修改(Update)。 首先,让我们深入...
JSF还支持EL(Expression Language),一种轻量级的脚本语言,用于在视图层与后台数据之间进行数据绑定和表达式计算。 在与数据库交互时,JSF可以与Java Persistence API (JPA) 或Hibernate等ORM框架结合使用,使得...
这通常涉及到对数据集合的切片操作。 3. **配置Data Table**:在JSF页面(通常是`.xhtml`文件)上,我们将使用Data Table组件来显示数据。Data Table的属性如`value`用于绑定到Managed Bean的数据集合,`rows`用于...
JSF提供了一个组件模型,允许开发者通过拖放组件的方式来构建用户界面,并通过事件处理和数据绑定来实现业务逻辑。 在JSF中,**组件** 是UI的基础元素,如按钮、文本输入框等。这些组件可以通过XML(Facelets)或...
以下是对这些技术结合使用的详细解释: 1. **JSF(JavaScript Server Faces)**:JSF是一种MVC(Model-View-Controller)架构的Java Web组件模型。它提供了丰富的UI组件库,如输入字段、按钮、表格等,使得开发者...
对于必须使用表格方式呈现的数据,JSF 的 <h:dataTable> 卷标协助您进行动态表格数据的输出。 o 简单的表格 o 表头, 表尾 o TableModel 类别 自订组件 JSF 让您可以自订组件,每个组件都是可替换的,这使得...
通过在Managed Bean中定义约束或者使用JSF提供的验证器,可以对用户输入进行校验。 **8. 视图跳转** JSF支持基于导航规则的视图跳转。你可以定义一个导航案例,根据不同的动作结果跳转到相应的页面。 **9. JSF与...
3. **处理验证(Process Validation)**:在这一阶段,JSF会对每个组件的值进行验证。验证器可以在faces-config.xml或通过注解定义,确保用户输入符合预设的规则。如果验证失败,JSF会跳过后续阶段并显示错误消息。 ...