2013-07-21 78 views
0

舉例來說,如果我有一個數據庫retreived以下數據:從查詢結果中發揮框架創建OPTGROUP

-------------------------- 
| 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> 

回答

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查詢...)