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>

項目の 1 つを削除してリストを表示する必要があります (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 >> }

必要に応じて、このワンライナーをビューで直接使用することもできます。

于 2012-12-28T15:54:30.737 に答える
0

これを行うには、grails ドメインでtoString()を更新します。

in toString() return name + ", " + categoryKey+ ", " + lastUpdated

dateCreated なしでフィールドを表示しています。

上記のコードを使用して、必要に応じてフィールドを表示できます。

于 2013-01-04T05:41:11.667 に答える