Grails自定义日期验证

时间:2015-07-24 19:04:09

标签: grails

我正在尝试创建自定义日期验证程序。我的目标是将日期作为标准日期存储在数据库中,但以自定义格式显示和验证前端的日期。我该怎么做呢?

我尝试过的。

final static DateFormat DATEFORMAT = new SimpleDateFormat('MM/dd/yyyy')

static constraints = {
    expenseDate validator: { value ->
        try {
           Date date = DATEFORMAT.parse(it)
           return DATEFORMAT.format(date) == it
        } catch (ParseException e) {
           return false
        }
     }
}

GSP

<div
    class="form-group ${hasErrors(bean: recoveryDetailInstance, field: 'expenseDate', 'error')} required">
    <label class="col-sm-4 control-label" for="expenseDate"> <g:message
            code="recoveryDetailInstance.expenseDate.label" default="Expense Date" /> <span
        class="required-indicator">*</span>
    </label>
    <div class="col-sm-8">
        <g:field id="dp1" class="form-control input-sm"
            name="expenseDate" type="text" data-date-format="MM/dd/yyyy" data-date="${recoveryDetailInstance?.getExpenseDateFormat()}"
            value="${formatDate(format:'MM/dd/yyyy', date: recoveryDetailInstance.expenseDate)}"
            disabled="${disabled}" required="" style="background:#fff"/>
    </div>
</div>

这似乎不起作用。

那么如何为前端格式化日期为MM / dd / yyyy,然后在插入之前验证并转换回日期?

1 个答案:

答案 0 :(得分:1)

我建议使用Grails标记formatDate进行显示。例如:

<g:formatDate format="yyyy-MM-dd" date="${date}"/>

日期验证可能是今天之后的'not null'等约束等。 参考问题here