我正在使用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 ]
如何在控制器中删除它并将新列表(Minus OTHER)传递给gsp?
由于
答案 0 :(得分: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。
答案 1 :(得分:0)
您可以在grails域中更新 toString()来执行此操作。
in toString()返回名称+“,”+ categoryKey +“,”+ lastUpdated
我正在显示没有dateCreated的字段。
您可以根据您的要求使用上述代码显示字段。