Как я могу получить не повторяющиеся значения даты Grails стег - PullRequest
1 голос
/ 18 мая 2011

У меня есть возможность выбрать дату из выпадающего списка с <g:select>. Как я могу получить неповторяющиеся значения даты через это? Это код для получения даты в указанном формате из класса домена.

dob имеет тип Date.

<g:set var="dateFormat" value="MM/dd/yyyy"/>
<g:select id="dob" name="dob" from="${Person.list().dob*.format(dateFormat)}"    
    value="${personInstance?.dob?.format(dateFormat)}" />

Ответы [ 3 ]

6 голосов
/ 17 мая 2011

Позвонить unique() в список предметов?

т.е.:

def colonies = [ 'a', 'a', 'b', 'c', 'c' ]
println colonies.unique()

отпечатки

[ 'a', 'b', 'c' ]

Однако следует помнить, что unique() мутирует оригиналколлекция, поэтому

println colonies

после вызова unique() также печатает

[ 'a', 'b', 'c' ]
3 голосов
/ 17 мая 2011

Если «Colony» является классом домена grails, вы можете изменить свой запрос, чтобы получить различные значения. Вы не предоставили подробности, но допустим, что ваш класс домена называется «Colony», и у него есть свойство с именем «name», которое по какой-то причине у вас не было уникального ограничения. Тогда вы можете сделать следующее:

//add this method to Colony.groovy
public static List listUnique() {
    Colony.withCriteria {
        projections {
            distinct "name"
        }
    }.sort() 
}

//in xxx.gsp
<g:select name="colony" from="${Colony.listUnique()}" />

Я согласен с ответом tim_yates выше, но подумал, что вам также может понравиться подход grails / hibernate.

0 голосов
/ 18 мая 2011
<g:set var="dateFormat" value="MM/dd/yyyy"/>
<g:select id="dob" name="dob" from="${Person.list().dob*.format(dateFormat).unique()}"    
    value="${personInstance?.dob?.format(dateFormat)}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...