How do I pass a date, relative to the current date, into a Query Filter?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-01-2013 02:27 PM
I'm creating a new Content View. I want to select documents where a date field (rule:Rule-ExpiringDate) is less than the current date plus 30 days. In other words, all documents that will expire within 30 days from today, including those already expired.
In the the Studio Content View -> Query filter, I tried this:
QUERY FILTER:
ecm:mixinType != 'HiddenInNavigation' AND ecm:isCheckedInVersion = 0 AND ecm:currentLifeCycleState != 'deleted' and ecm:parentId= ? and rule:Rule-ExpiringDate <= DATE ?
QUERY PARAMETERS:
#{currentDocument.id}
@{currentDate.days(30)}
Resulting in this error in Nuxeo:
Failed to execute query: java.lang.IllegalArgumentException: Invalid format: "@{currentDate.days(30)}" in query: SELECT * FROM Document WHERE ecm:mixinType != 'HiddenInNavigation' AND ecm:isCheckedInVersion = 0 AND ecm:currentLifeCycleState != 'deleted' and ecm:parentId= '7af53f00-181c-45af-921d-ccdd3bf2bab2' and rule:Rule-ExpiringDate <= DATE '@{currentDate.days(30)}' ORDER BY rule:Rule-ExpiringDate DESC
What is the correct Query Filter and Query Parameters?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2013 02:52 PM
Hi,
The filter looks ok, and first parameter too, but the second parameter is using the MVEL syntax as if you were in the context of an operation. You need to use JSF EL here (i know it's confusing...).
I'm not sure if you have a simple way of doing "@{currentDate.days(30)}" without writing code, but i can try to find out if you're still interested.
