【问题标题】:Creating optgroup in play framework from a query result从查询结果创建 optgroup in play 框架
【发布时间】:2013-07-21 20:16:00
【问题描述】:

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

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

【问题讨论】:

    标签: playframework-1.x


    【解决方案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 查询......)

    【讨论】:

      猜你喜欢
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多