0

我正在使用 grails 1.3.7。

我有以下域:

class Category {

    String name;
    String categoryKey;

    Date dateCreated
    Date lastUpdated

    static constraints = {
        name(blank: false, nullable: false, maxSize:30)
        categoryKey(blank: false, nullable: false, maxSize:30)
    }

    String toString()
    {
        return name
    }
}

我在 gsp 中显示的类别列表如下:

 <g:select class="fields" valueMessagePrefix="shared.category.label" name='categoryKey'
              value="${dealInstance?.category?.categoryKey}"
              noSelection="${['': message(code: 'layouts.main.filter.select', default: '(Please select one)')]}"
              from='${categoryList.list()}' optionValue="name"
              optionKey="categoryKey"></g:select>

我需要显示删除其中一项的列表(其中 categoryKey 属性等于 OTHER)。

def Category categoryList = Category
//categoryList.categoryKey.remove("OTHER") How to remove here maybe?
return [dealInstance: dealDetails, categoryList: categoryList ]

如何在我的控制器中删除它并将新列表(减去 OTHER)传递给 gsp?

谢谢

4

2 回答 2

0

您可以使用findAll集合函数并使用闭包来检查要删除的对象。

从文档中:

assert [2,4] == [1,2,3,4].findAll { it % 2 == 0 }

因此,您可以执行以下操作:

categoryList.findAll { << return false if 'it' is of type 'OTHER', otherwise true >> }

如果您愿意,您也可以直接在您的视图中使用此 oneliner。

于 2012-12-28T15:54:30.737 回答
0

您可以更新grails 域中的toString()来执行此操作。

在 toString() 中返回名称 + ", " + categoryKey+ ", " + lastUpdated

我正在显示没有 dateCreated 的字段。

您可以根据您的要求使用上述代码显示字段。

于 2013-01-04T05:41:11.667 回答