我使用Grails和createCriteria根据日期是否在2个用户输入日期之间缩小搜索结果范围。当搜索的所有日期属性碰巧为空时,我遇到的问题就出现了。这导致错误说
无法获取java.lang.String
的属性dayOfTheMonth
有解决方法吗?如果我更改数据库以向其中一个用户提供其工作日期,则只有当所有数据都为空时才会发生这种情况。
def c = User.createCriteria()
DateTime tempDobStart = new DateTime(Integer.parseInt(params.dobStart_year), Integer.parseInt(params.dobStart_month), Integer.parseInt(params.dobStart_day), 0, 0)
DateTime tempDobEnd = new DateTime(Integer.parseInt(params.dobEnd_year), Integer.parseInt(params.dobEnd_month), Integer.parseInt(params.dobEnd_day), 0, 0)
def results = c.list(params) {
and {
if (username) {
ilike("username", '%' + username.trim() + '%')
}
if (firstName) {
ilike("firstName", '%' + firstName.trim() + '%')
}
if (lastName) {
ilike("lastName", '%' + lastName.trim() + '%')
}
if (tempDobStart && tempDobEnd) {
between("dob", tempDobStart, tempDobEnd)
}
}
return results
答案 0 :(得分:0)
结束了一个完全不同的问题,当我重定向回搜索页面时,它试图重新填充我试图搜索的东西,即使它认为它不是正确的格式。