0

例如,如果我从数据库中检索以下数据:

--------------------------
|  id | name | department|
--------------------------
|  1  | john | HR        |
--------------------------
|  2  | peter| accounting|     
--------------------------
|  3  | adam | secretary |     
--------------------------

我如何创建一个 optgroup 标记以在 optgroup 中显示此结果以具有以下内容:

 <select >              
            <optgroup label='HR'>
              <option value='1'>john</option>
            </optgroup>
            <optgroup label='accounting'>
              <option value='2'>peter</option>
            </optgroup>
            <optgroup label='secretary'>
              <option value='3'>adam</option>
            </optgroup>
 </select>
4

1 回答 1

1

这可能不是最好的方法,但您可以将部门表示为模型并这样做:

用户型号:

public class User extends Model {

    public String name;

    @ManyToOne
    public Department department;


}

部门型号:

public class Department extends Model {

    public String name;

    public List<User> getUsers() {
        List<User> users = new Arraylist<User>();
        if (this.id != null) {
            users = User.find("department.id is ?", this.id).fetch();
        }
        return users;
    }

}

然后在您看来,您可以通过这种方式生成选择框列表

<select>
    #{list departments, as : 'department'}
        <optgroup label="${department.name}"">
            #{list department.users, as : 'user'}
                <option value="${user.id}">${user.name}</option>
            #{/list}
        </optgroup>
    #{/list}
</select>

就像我说的,也许有更好的方法,(也许使用原始 sql 查询......)

于 2013-07-21T23:52:52.547 回答