前段时间刚换公司,进入公司正好碰到一个项目在使用JSF框架,当时项目经理就让我做下基本的一些信息处理,也就是增删改查(刚去公司,加上能力又不照,只好从基本做起,呵呵)
但是在做的过程中,因为用户表与角色表是想关联的,而在显示所有用户的时候,需要将想对应的关联角色显示出来,而数据库中只是主键关联,并非名称关联。原本以为只需要在JSF页面上这样就可以了
<h:column>
<h:dataTable border="1" id = "users" value="#{UserBean.list}" var="u" styleClass="orders" headerClass="ordersHeader" rowClasses="evenColumn,oddColumn">
<f:facet name="header">
<f:verbatim escape="true">角色</f:verbatim>
</f:facet>
<h:selectOneMenu value="#{u[1]}">
<f:selectItems value="#{u[1]}"/>
</h:selectOneMenu>
</h:column>
</h:dataTable>
可是运行后,发现根本不可以显示角色。在网上找了下,终于找到解决办法了。
JSF页面
<h:column>
<h:dataTable border="1" id = "users" value="#{UserBean.list}" var="u" styleClass="orders" headerClass="ordersHeader" rowClasses="evenColumn,oddColumn">
<f:facet name="header">
<f:verbatim escape="true">角色</f:verbatim>
</f:facet>
<h:selectOneMenu value="#{u[1]}">
<f:selectItems value="#{#{RoleBean.roleList}}"/>
</h:selectOneMenu>
</h:column>
</h:dataTable>
后台Bean
public class RoleBean {
public int roleId;
public String roleName;
public String roleRemark;
public String msg;
public List<SelectItem> roleList = new LinkedList<SelectItem>();
public Vector list;
public RoleBean() throws Exception {
if (roleList == null) {
roleList = new LinkedList<SelectItem>();
}
RoleBR rbr = new RoleBR();
Vector v = new Vector();
String id = null;
String name = null;
v = rbr.getAllRoleName();
list = rbr.getAllList();
Iterator it = v.iterator();
while (it.hasNext()) {
String[] row = (String[]) it.next();
for (int i = 0; i < row.length; i++) {
if (i == (i / 2)) {
id = row[i].trim();
name = row[i + 1].trim();
} else {
continue;
}
roleList.add(new SelectItem(id, name));
}
}
}
public int getRoleId() {
return roleId;
}
public void setRoleId(int roleId) {
this.roleId = roleId;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getRoleRemark() {
return roleRemark;
}
public void setRoleRemark(String roleRemark) {
this.roleRemark = roleRemark;
}
/**
* create the selectOneMenu for user regrest.jsp
* @return
*/
public List<SelectItem> getRoleList() {
return roleList;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
数据库层DAO
public class RoleDA {
private DBBase theDB = new DBBase();//数据库连接
private String str_sql = null;
/**
* 取得所有的角色
* @return
*/
public Vector getAllList() {
Vector result = new Vector();
str_sql = "select t.roleid,t.rolename,t.remark from s_role t";
result = theDB.selectAll(str_sql);
return result;
}
}
JSF配置文件
<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
version="1.2">
<managed-bean>
<managed-bean-name>RoleBean</managed-bean-name>
<managed-bean-class>ahbagz.bean.RoleBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>
分享到:
相关推荐
JSF加入Ajax功能的下拉框自定义组件,含源代码。
本文将详细讲解如何通过JSF来实现一个动态的三级级联下拉框,这在多层级关联的数据展示中非常有用,比如地区、城市、街道的选择。我们将使用Java后端和数据库来获取并传递这些数据。 首先,我们需要了解JSF的基本...
本教程将带你深入了解JSF的基础使用,包括框架的引入、用户登录实现、自定义表单验证以及通过`valueChangeEvent`处理级联下拉框。 **一、JSF框架的引入** 在Java EE项目中引入JSF框架,首先需要在`pom.xml`或`build...
JavaServer Faces (JSF) 是一个用于构建用户界面的Java Web框架,它简化了创建和维护Web应用程序的复杂性。JSF的核心理念是提供一种组件化的编程模型,将UI元素与业务逻辑分离,使得开发者可以专注于应用的逻辑部分...
用户可能希望调整每页显示的记录数,为此,可以在界面提供一个下拉框让用户选择。后端需要相应地更新每页记录数,并重新计算和加载数据。 7. **状态管理**: 考虑到JSF的请求范围,确保分页状态(当前页、每页...
在JSF(JavaServer Faces)框架中,创建静态页面的三级级联下拉框是一种常见的需求,这通常用于实现用户界面中的数据筛选功能。在这个示例中,我们看到的是一个利用JSF、Java和MyFaces库构建的三级联动下拉菜单。这...
JSF提供了丰富的UI组件,如表格、下拉框、按钮等,它们可以通过事件处理进行交互。`<f:event>`和`<f:ajax>`标签可以用来注册监听器或实现异步更新。 ### 六、JSF与Java EE集成 JSF可以很好地与其他Java EE技术,如...
在实际项目中,除了Struts2,还有其他框架如Spring MVC、JSF等也支持自定义标签。总的来说,理解和掌握自定义标签的创建和使用是提高开发效率、提升代码质量的重要手段,对于提升IT专业技能有着积极的作用。
- 对于下拉框、多选框等控件,推荐使用`List<SelectItem>`而非`SelectItem[]`。这允许在初始化时省略指定长度,并且在添加或删除元素时操作更简洁,特别是处理权限分配等动态变更场景,无需重新构建整个对象。 2. ...
1、js代码: 代码如下: function init() { ... } 2、h:selectOneMenu下拉框 代码如下: ”studyPhase” value=”#{schoolfellowInfoEdit.studyPhase}”> ”#{schoolfellowInfoEdit.studyPhaseNamesItems}”/> </h>
JSF组件库还包括许多其他类型的组件,如表格、下拉框、日期选择器等。 **二、JSF生命周期** JSF应用有四个主要阶段:恢复视图、应用请求值、处理验证和更新模型值、调用应用。在每个阶段,JSF会执行特定的任务,...
- **下拉联动**:在一个下拉框选择后,通过Ajax动态填充另一个下拉框的选项。 学习如何使用JSF和Ajax制作强大的网络组件,不仅可以提升Web应用程序的交互性,还能为用户提供更流畅的体验。理解这些技术并熟练运用...
这些库提供了多种Ajax启用的组件,如按钮、输入字段、下拉框等,只需简单配置就能实现Ajax功能。 2. **JSF的Ajax事件和行为**:JSF提供了一种称为AJAX事件的机制,允许开发者定义在特定用户交互时触发的Ajax调用。...
在线就业管理系统是一款基于Java技术栈开发的Web应用,主要利用了JSF(JavaServer Faces)作为前端展示框架,Hibernate作为持久层 ORM(Object-Relational Mapping)工具,以及EasyUI作为用户界面组件库。...
使用Seam和JSF,可以创建一个`<h:selectOneMenu>`组件来展示下拉框,并使用`f:ajax`标签来实现异步更新。例如,当省选择改变时,触发AJAX请求,`LocationService`返回对应的城市列表,更新城市下拉框。同样,城市...
在JSF应用中,`HashSet`可以用于构建唯一数据集,例如作为下拉框选择项的来源。 ### 4. LinkedHashMap `LinkedHashMap`是`HashMap`的一个子类,它保留了插入元素的顺序,即迭代器遍历元素时会按照插入顺序返回。在...
MyFaces提供了丰富的UI组件,例如表格、图表、下拉框等,这些组件可以方便地通过XML或Java代码进行声明和操作。 在实际开发中,开发者需要熟练掌握JSF的生命周期,理解何时创建和销毁组件,如何处理用户输入,以及...
此外,`org.richfaces.model.SelectItem`类用于创建可选的下拉框或列表项,提供更灵活的数据绑定选项。`org.richfaces.renderkit.html_extended.AjaxRenderer`则负责处理AJAX渲染逻辑,确保页面更新只发生在必要的...
通过这些标签,开发者可以方便地实现如级联下拉框、输入字符匹配等功能,且建立在JavaScript框架之上。 3. **Struts AjaxTags**:此框架扩展了Struts的HTML标签库,为已有的Struts应用添加AJAX支持,无需深入了解...
2. **crm_easyui**:EasyUI是基于jQuery的一个轻量级前端框架,它为开发者提供了丰富的UI组件,如表格、下拉框、树形控件等,使得快速开发用户友好的Web界面成为可能。在这个CRM项目中,EasyUI可能被用来构建系统的...