域中的日期字段和g:textField标记不适用于Grails

时间:2016-04-06 08:26:41

标签: grails spring-security grails-2.0 grails-domain-class bootstrap-datepicker

我的应用程序的用户域扩展自SecUser (Spring Secrity Core中的安全用户类)。在这个域(用户)中,我有几个字段,其中一个是: Date birthDate 。脚手架创建了 g:datePicker 标签,但我不喜欢这种风格。

我想实现例如:针对Boostrap(http://www.eyecon.ro/bootstrap-datepicker/)的Datepicker,但此库使用输入类型="文本" 字段。

在我的视图(。gsp )中,如果我输入文字输入,则保存和更新操作不起作用,因为在我的控制器中 userInstance.birthDate < / strong>该值为null。

如果我使用 g:datePicker 标记,我的控制器会正确获取值。

我该如何解决这个问题? 感谢。

EDITED

我认为的Datepicker Bootstrap代码:

Activity

现在,我可以使用 params.birthDate 获取控制器中的值,但会出现下一个错误:

<div class="input-group date date-picker" data-date-format="dd-MM-yyyy" data-date-end-date="+0d">
       <input type="text" id="birthDate" name="birthDate" value="${formatDate(format:'dd-MM-yyyy',date: userInstance?.birthDate)}" class="form-control form-shadow"/>
       <span class="input-group-btn">
             <button class="btn default" type="button">
                  <i class="fa fa-calendar"></i>
             </button>
       </span>
</div>
<span class="help-block">
  <h5>
       <g:message code="custom.date.picker.description" default="Select a date"/>
  </h5>
</span>

解决:

解决方案是在Datepicker for Bootstrap库中正确解析。该库使用不同的解析器。例如:&#39; 01-04-2016 &#39;在Grails中是 dd-MM-yyyy &#39;但在这个图书馆中是:&#39; dd-mm-yyyy &#39;。

在此链接中显示以下格式: https://bootstrap-datepicker.readthedocs.org/en/latest/options.html#format

此外,有必要在 Config.groovy 中添加以下行:

Class java.text.ParseException Message Unparseable date: "01-04-2016"

1 个答案:

答案 0 :(得分:1)

直接的解决方案是在控制器操作中映射日期字段:

def save( User user ) {
  ....
  user.birthDate = new SimpleDateFormat( 'dd-MM-yyyy' ).parse params.birthDate
  ...
}