JSFドロップダウンボックス


前の时间はちょうど会社を変えて、会社に入ってちょうど1つのプロジェクトが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>