在Grails中添加时间控件标签,以下代码是防止标签.groovy文件中
class MyTagLib {
static namespace = "my"
/**
* 该标签为更新预警所用,day month year 设定需要更新的时间
*/
def needChangeTimePicker={attrs,body->
def name=attrs.name
def format=attrs.format
def value=attrs.value
def precision=attrs.precision //year month day hour minute
def day=attrs.day
def month=attrs.month
def year=attrs.year
Calendar cad = Calendar.getInstance();
def i=10
if(!precision){
precision="day"
}
if(precision=="year"){
i=4
}else if(precision=="month"){
i=7
}else if(precision=="day"){
i=10
}else if(precision=="hour"){
i=13
}else if(precision=="minute"){
i=16
}
if(!format){
format="yyyy-MM-dd"
}
if(day || month || year){
if(day){cad.add(Calendar.DAY_OF_MONTH, (int)day);}
if(month){cad.add(Calendar.MONTH, month.toInteger());}
if(year){cad.add(Calendar.YEAR, (int)year);}
value=new java.text.SimpleDateFormat(format).format(cad.getTime())
}else{
value=new java.text.SimpleDateFormat(format).format(value)
}
out<<"""
<input type='text' id='datepinker_id_${name}' name='datepinker_id_${name}' value='${value}' class='Wdate' onClick=\"WdatePicker({dateFmt:'${format}'})\" οnchange='checkDate${name}()' readonly='true' />
<input type='hidden' id='${name}' name='${name}' value='date.struct' />
"""
switch(i){
case 16: out<<"<input type='hidden' name='${name}_minute' id='${name}_minute' />\r\n"
case 13: out<<"<input type='hidden' name='${name}_hour' id='${name}_hour' />\r\n"
case 10: out<<"<input type='hidden' name='${name}_day' id='${name}_day' />\r\n"
case 7: out<<"<input type='hidden' name='${name}_month' id='${name}_month'/>\r\n"
case 4: out<<"<input type='hidden' name='${name}_year' id='${name}_year'/>\r\n"
}
out<<"""
<script type="text/javascript" src="${request.contextPath}/js/datepicker/WdatePicker.js"></script>
<script>
function checkDate${name}(){
var s=document.getElementById('datepinker_id_${name}').value;
//alert(s);
var len=s.length;
switch(${i}){
case 16:document.getElementById('${name}_minute').value=s.substr(14,2);
case 13:document.getElementById('${name}_hour').value=s.substr(11,2);
case 10:document.getElementById('${name}_day').value=s.substr(8,2);
case 7:document.getElementById('${name}_month').value=s.substr(5,2);
case 4:document.getElementById('${name}_year').value=s.substr(0,4);
}
}
"""
if(value){
out<<"""
checkDate${name}();
"""
}
out<<"""
</script>
"""
}
}
然后在GSP中调用
<my:needChangeTimePicker month="2" name="needChangeTime" value="" />
month=2是在今天的时间上加上2个月,其中日,年,都可以设定