我正在尝试创建自定义日期验证程序。我的目标是将日期作为标准日期存储在数据库中,但以自定义格式显示和验证前端的日期。我该怎么做呢?
我尝试过的。
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,然后在插入之前验证并转换回日期?
答案 0 :(得分:1)
我建议使用Grails标记formatDate进行显示。例如:
<g:formatDate format="yyyy-MM-dd" date="${date}"/>
日期验证可能是今天之后的'not null'等约束等。 参考问题here