财产必须是grails中的有效日期

时间:2015-08-04 12:26:30

标签: grails simpledateformat

我已将incomeDate用作日期,并尝试以字符串形式提交' 2015-08-02'。而且我试图以不同的方式提交它但却收到错误。

class IncomeTransaction {
    Date incomeDate
    ------
}

.gsp

<input type="text" name="incomeDate" placeholder="yyyy-mm-dd" />

控制器:

String dateString = params.incomeDate
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = formatter.parse(dateString);
incomeTransactionInstance.incomeDate = myDate

// get error like ---- Property incomeDate be a valid Date in grails

/*Another way*/
//params.incomeDate = new Date().parse( 'yyyy-MM-dd', params.incomeDate )
// get error like ---- unparsable 

3 个答案:

答案 0 :(得分:4)

使用<g:datePicker />的替代方法,您也可以在input页面中使用常规gsp。只需将以下内容添加到您的域类:

import org.grails.databinding.BindingFormat

class IncomeTransaction {
    @BindingFormat('yyyy-MM-dd')
    Date incomeDate
}

当您使用日期选择器(例如jQuery Datepicker)时,这非常有用。

答案 1 :(得分:3)

  1. 如果你不知道但是想要自己找出grails有一个好东西,你可以随时生成控制器并通过grails查看并查看它是如何完成的

  2. 我在日期使用的不是输入类型文本,而是以下内容:

    <g:datePicker name="incomeDate" precision="day"  value="${incomeTransactionInstance?.incomeDate}" default="none" noSelection="['': '']" />
    
  3. 在你的控制器中你不需要任何解析:

    incomeTransactionInstance.properties = params
    

    并保存您的对象

答案 2 :(得分:0)

可以在grails-app/conf/application.groovy中配置全局设置(对于Grails 3,在Grails 2的grails-app/conf/Config.groovy),以定义在绑定到Date时将在应用程序范围内使用的日期格式,如此:

grails.databinding.dateFormats = ['yyyy-MM-dd']

希望这有帮助。