如何使用<g:select>标记</g:select>获取非重复日期值grails

时间:2011-05-18 10:23:30

标签: grails groovy

我可以选择使用<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 个答案:

答案 0 :(得分:6)

在项目列表上拨打unique()

即:

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

打印

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

请注意,unique()会改变原始集合,所以

println colonies
调用unique()

也打印

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

答案 1 :(得分:3)

如果“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方法。

答案 2 :(得分:0)

<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)}" />