如何选择小于或大于grails和groovy下拉的年龄

时间:2011-06-07 13:39:28

标签: java javascript ajax grails groovy

我有一个要求应该有一个下拉列表包含一些年龄条件。 比如不到10天,10到30天,1个月到3个月,4个月到12个月,1到2岁之间。

我的域类包含一个属性年龄(整数)。我正在计算年龄表dob到当前日期并存储在DB中。我有搜索条件在搜索页面中根据年龄进行搜索,那么我该如何显示这些条件vales in下拉列表,当我选择一个选项时如何根据年龄显示结果。

目前我在数据库的下拉列表中显示所有年龄段,请找到代码并帮助我这样做,如果不清楚请写下评论以便我可以解释你。

这是我的下降所有的dobs

 <td><span id="availableAge" ></span></td>  

这是我通过ajax调用从控制器获取dobs的脚本

 function generateAge(data){
        var list ="<select style='width:100px' id='age' name='age'><option value=''>-Select-</option>";
        var opt;    
            for(var i=0; i<data.ageDetails.length; i++){
                opt = "<option value="+data.ageDetails[i].age+">";
                opt = opt+data.ageDetails[i].age;
                opt = opt+"</option>";  
                list = list+opt;                
            }           
        list = list+"</select>";
        var listObj = document.getElementById("availableAge");
        if(listObj){
            listObj.innerHTML = list;
        } 
    }

1 个答案:

答案 0 :(得分:4)

将年龄存储在数据库中是一个坏主意,因为它一直在变化 - 更好地坚持使用DOB。

由于选项集已修复,请为其设置类似enum的内容,使用其values()呈现select

enum AgeCriteriaEnum { NONE, LESS_THAN_10, BETWEEN_10_AND_30, ... so on }

并且只需执行switch()

AgeCriteriaEnum ageEnum = AgeCriteriaEnum.valueOf(params.ageEnum)
Date today = new Date()

Patient.withCriteria {
  switch(ageEnum) {
    case AgeCriteriaEnum.NONE: 
      break;
    case AgeCriteriaEnum.LESS_THAN_10: 
      ge('dob', today-10)
      break;
    case AgeCriteriaEnum.BETWEEN_10_AND_30: 
      lt('dob', today-10)
      ge('dob', today-30)
      break;
      //... so on
  }
}