木易有峰 发表于 2013-2-6 08:35:00

JSF下拉框

前段时间刚换公司,进入公司正好碰到一个项目在使用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}">                            <f:selectItems value="#{u}"/>                        </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}">                            <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.trim();                  name = row.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>
页: [1]
查看完整版本: JSF下拉框