如何使用标准搜索JodaDate和JodaTime?

时间:2011-10-31 12:01:52

标签: grails groovy

我是grails的新手。我正在使用joda插件来表示日期和时间。所以我在单独的列中显示日期和时间。现在我想使用条件搜索日期。 我在gsp页面中使用下面的代码来搜索日期。

<tr class="prop">
                                <td valign="top" class="name">
                                    <label for="createdOn"><g:message code="asset.createdOn.label" default="Created On" /></label>
                                </td>
                                <td valign="top" class="value ${hasErrors(bean: assetInstance, field: 'createdOn', 'errors')}">
                                    <joda:datePicker name="createdOn" precision="date" value="${assetInstance?.createdOn}" />

                                </td>
                            </tr>

我使用标准在控制器中使用了以下代码。

def search= {
     if (request.method == 'POST'){
     def criteria = Asset.createCriteria()

          def results = criteria { 

   or {
             gt('createdOn','%' + params.createdOn + '%').toDate()
             }


          }
         render(view:'list', model:[ assetInstanceList: results,assetInstanceTotal: Asset.count() ])
     }
       } 

但它显示错误。请指导我解决这个问题。

1 个答案:

答案 0 :(得分:1)

您可能希望将搜索绑定到命令,以便拥有实际绑定的Date对象而不是String参数。

class SearchCommand {
    LocalDate createdOn
    ...
}

您还需要修改标准。

def search = { SearchCommand command ->
    ...

    def results = criteria {
        or {
            gt('createdOn', command.createdOn)
            ...
        }
    }