Фон: тег g: sortableColumn по умолчанию вызывает действие списка в контроллере, передавая ему параметр «sort», который указывает, по какому полю сортировать. В моем конкретном случае у меня есть класс / список проблем, которые я сортирую:
class Issue {
String title
...
User assignedTo
...
}
и
Class User {
String lastName
...
}
Указание свойства g: sortableColumn = "assignTo.lastName», которое преобразуется в параметр сортировки списка, прекрасно работает, если проблема была назначена - то есть assignTo не ноль. Но если это не так, то list () больше не возвращает его. Я не знаю, является ли это ошибкой list () или нет (комментарии?), Но я бы хотел, чтобы эти проблемы с нулевым назначенным значением пришли к концу.
Я думал о том, чтобы объединить Issue.list () с Issue.findAllByAssignedToIsNull (), но это потребует согласования max / offset в обоих случаях, которых я бы предпочел избежать, если это возможно.
Мысль / комментарии?
------- за комментарий ------
Это стандартное (Grails 1.3.7) действие списка лесов, т. Е .:
def list = {
params.max = Math.min(params.max ? params.int('max') : 10, 100)
[issueInstanceList: Issue.list(params), issueInstanceTotal: Issue.count()]
}
----- за второй комментарий (мой) ------------------------------------ ----
Я также попробовал следующее, еще раз он не возвращал Проблемы, где assignTo был нулевым:
<g:sortableColumn property="assignedTo.lastName" title="${message(code: 'issue.assignedTo.label', default: 'Assigned To')}" />
def list = {
if (params.sort == 'assignedTo.lastName') {
println "doing special find/sort by: ${params.sort}"
return [issueInstanceList: Issue.findAllByAssignedToIsNullOrAssignedToIsNotNull(params), issueInstanceTotal: Issue.count()]
}
[issueInstanceList: Issue.list(params), issueInstanceTotal: Issue.count()]
}