我需要将(oracle)数据库中的日期时间保存在一列中,它是时间戳的sqlType(看起来像01-JAN-14 12.00.00.000000 AM
)。在学习 grails 时,我一直在使用 Joda lib 和它的“时间选择器”。
Joda timepicker 运行良好,但现在我想去黄金时段,我正在寻找对用户更友好的东西。坦率地说,文本框可能比 joda 给你的下拉菜单更友好。
无论如何,我想删除 joda 并使用这样的东西:
http://trentrichardson.com/examples/timepicker/
但我不知道如何在 grails 中实现它。在我看来,如果我说:
<input type="text" name="endDate" id="endDate" value="${exampleInstance?.endDate}" />
代替 g:datePicker
,它工作正常(即选择器),除了没有任何内容保存到数据库中,也没有生成错误。我点击保存,显示 View 出现一个空的 endDate 字段。我需要更多输入标签吗?
是否有一些简单的方法可以实现我错过的现代外观的日期+时间选择器?
此外,我在这里看到了这个选择器的插件
http://grails.org/plugin/jquery-ui-timepicker
但由于没有任何文档,我也不确定如何使用它 (?)
回答
在 Controller 保存/更新中放一些类似的东西:
def endDate = params.date('endDate', 'yy-MM-dd h:mm')
//println "Date from Picker was "+endDate
params.endDate = endDate
不需要进一步转换,因为它最终可以将日期选择器控件格式化为与数据库中的格式非常接近的格式,但是如果我需要从一种奇怪的格式或字符串转换为另一种格式,我玩弄了使用这段代码,它比我在整个过程中思考的任何东西都更伪(我确信有一种完全 Groovy 的方式来做同样的事情):
SimpleDateFormat inputFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss.S");
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yy h.mm.ss.S a");
def v = params.endDate
Date date = inputFormat.parse(v);
String temp = sdf.format(date)
Date dateOut = sdf.parse(temp)
println dateOut
最佳答案
日期选择器是您的 UI 组件,因此您可以拥有任何您希望用于 UI 的库和任何其他用于后端的库。大多数情况下,如果它们提供一点文档,它们很容易实现!!
您提供链接的 jQuery ui 插件的时间选择器公开了一个名为 jqueryUiTimePicker
的资源,它依赖于 jQuery 和 jQuery-ui。因此,只需将此资源包含到您的资源配置中,您就应该能够使用它。它与定义您自己的资源并使用它没有什么不同。
关于您遇到的保存问题,在您的保存传递参数 failOnError:true
中,这样您就可以看到错误(如果有)。
我创建了一个 sample使用此插件的项目希望对您有所帮助
关于Grails 时间选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22103475/