Grails中validator和datePicker

项目中的一个字段需要把它限制在必须大于当前的时间,不能小于当前的时间,一般我

们在页面显示到天这个精确度就行了。gsp页面给我们提供了<g:datePicker>这个标

签,通过参考它的文档,知道了它的一些属性的意思。如下:

name 必须的) – datePicker的名字

value (可选的) -默认是当前的时间

precision (可选的) – 简单的说就是精确度,在页面上显示到的精度,有year,

month,day,hour,minute这几个选项,如果没有指定的话,默认是minute。

各个选项对应的默认值

month = January
day = 1st day of the month
hour = 00
minute = 00

noSelection (可选l) -举个例子就能很好明白它的意思,例如:

noSelection=”[‘time’:’-选择年份-’]“,这时如果下拉框中的第一个值就是“-选择年份-”

如果你查看源代码的话,你会发现,-选择年份-

years (可选) -如果没有指定,在年的下拉框里出现的年是当前年的正负100年。如果指定的话,就会出现我们指定的年份 。

下面介绍下自定义验证:

例如:我们在domain定义了一个publishTime这个字段,类型是Date,这时我们

要验证我们在gsp页面输入的日期是否满足我们的要求,这里就需要我们在domain类中

constraints对publishTime这个字段做自定义的字段。我是这样写的 :PTime( validator: { Date d = new Date() SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd”) return ( it>=new Date(d.getTime()-24*60*60*1000))})因为我在gsp页面上填的日期最小单位是天,所以,生成的日期具体到时分秒都是0,所

以在validator中我们让它大于当前时间的前一天,这样我们就可以实现填写的日期不能

小于当前日期。

然后我们可以在message.properties定义报错信息。这样一个自定义的日期验证的功能

就完成了。

ps:在message.properties中我们可以修改日期的显示格式

default.date.format=yyyy-MM-dd

另外这个标签<g:formatDate>也可以实现这个功能。