Я пытаюсь отфильтровать список по полю формата даты.Grails Фильтрация списка по году
class Timesheet {
String orderNumber
String groupCode
String periodCode
BigDecimal totalHours
Date importTime
Date generationTime // here
String description
И контроллер:
def list = {
flash.periodCode = params.periodCode
flash.groupCode = params.groupCode
flash.orderNumber = params.orderNumber
// here
flash.generationTime = Date.parse('yyyy-mm-dd hh-mm-ss', params.generationTime)
if(!params.max) {
params.max = 20
}
def query
def criteria = Timesheet.createCriteria()
def results
query = {
and{
like("periodCode", '%' + params.periodCode + '%')
like("groupCode", '%' + params.groupCode + '%')
like("orderNumber", '%' + params.orderNumber + '%')
like("generationTime", '%' + params.generationTime + '%')
}
}
results = criteria.list(params, query)
render(view:'index', model:[ timesheetInstanceList: results ])
}
Дата выглядит следующим образом: 2014-01-02 08:46:14 CET
.
То, что я пытаюсь сделать, это поместить текст в текстовое поле типа «2014», а контроллер grails должен найти все записи с датой, включая «2014». Есть ли простой способ сделать это? Исключение, которое я получил это:
Unparseable date: "2013-12-31 08:02:55"
or
"java.lang.String cannot be cast to java.util.Date filtering grails"
Зависит от формата params.generationTime. Однако, если ваша дата выглядит так: «2013-12-31 08:02:55», правильный шаблон: «yyyy-MM-dd hh: mm: ss» – alessandro
В формате GenerationTime есть формат даты. Текст, который я хочу сравнить с этим форматом даты, - это строка, получаемая из текстового поля: Тип ввода = "текст" id = "generationTime" name = "generationTime" value = "$ {flash.generationTime}" И, конечно, вы правильно записываете правильную картину – user3245082